在Linux下编译多线程程序时,需要确保使用了正确的编译选项
-pthread
选项:在编译命令中添加-pthread
选项,这将启用POSIX线程库(libpthread),并告诉编译器生成支持多线程的可执行文件。例如:gcc -Wall -o my_program my_program.c -pthread
-pthread
选项后,还需要确保链接线程库。通常情况下,编译器会自动链接libpthread库,但有时可能需要手动指定。例如:gcc -Wall -o my_program my_program.c -pthread -lpthread
<pthread.h>
。然后,可以使用pthread_create()
函数创建线程,pthread_join()
函数等待线程结束等。例如:#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *print_hello(void *arg) {
printf("Hello from thread %ld\n", (long)arg);
pthread_exit(NULL);
}
int main() {
pthread_t threads[5];
int rc;
long t;
for (t = 0; t < 5; t++) {
printf("In main: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, print_hello, (void *)t);
if (rc) {
printf("ERROR: return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
for (t = 0; t < 5; t++) {
pthread_join(threads[t], NULL);
}
pthread_exit(NULL);
}
遵循以上步骤,你应该能够在Linux下成功编译并运行多线程程序。