我认为问题在于我没有使用./a.out而不是./filename,但事实并非如此。
这是我编译程序的方式:
g++ -o -Wall -pthread filename.cpp
运行:
./filename
我认为运行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);
}
答案 0 :(得分:5)
致电
g++ -o -Wall -pthread filename.cpp
指示编译器将结果写入名为-Wall
的文件。
因此,您想使用其中一个
g++ -Wall -pthread filename.cpp
g++ -Wall -pthread -o filename filename.cpp
第一个将结果写入a.out
,第二个写入filename
。 (它还启用警告)