我认为问题在于我没有使用./a.out而不是./filename,但事实并非如此.
这是我编译程序的方式:
g++ -o -Wall -pthread filename.cpp
Run Code Online (Sandbox Code Playgroud)
运行:
./filename
Run Code Online (Sandbox Code Playgroud)
我认为运行pthread程序与运行标准c ++程序不同,但事实并非如此.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
struct argStruct {
int arg1;
int arg2;
};
void *sum(void *arguments) {
struct argStruct *args = (struct argStruct *)arguments;
int a = args -> arg1;
int b = args -> arg2;
int c = a + b;
printf("%d + %d = %d ",a,b,c);
pthread_exit(NULL);
}
int main() {
pthread_t thr1, thr2;
struct argStruct args;
args.arg1 = 3;
args.arg2 = 10;
int t1, t2;
pthread_create(&thr1, NULL, &sum, (void *)&args);
pthread_create(&thr2, NULL, &sum, (void *)&args);
pthread_join(thr1, NULL);
pthread_join(thr2, NULL);
exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
通过电话
g++ -o -Wall -pthread filename.cpp
Run Code Online (Sandbox Code Playgroud)
您指示编译器将结果写入名为的文件-Wall.
因此,您想要使用其中一个
g++ -Wall -pthread filename.cpp
g++ -Wall -pthread -o filename filename.cpp
Run Code Online (Sandbox Code Playgroud)
第一个写入结果a.out,第二个写入filename.(它还启用警告)