在Ubuntu上使用GCC编译多线程程序,你需要使用-pthread
选项。这将启用线程支持,链接pthread库,并设置适当的编译器标志。下面是一个简单的示例:
multithread_example.c
的源文件,内容如下:#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *print_hello(void *ptr) {
char *message;
message = (char *) ptr;
printf("%s \n", message);
pthread_exit(NULL);
}
int main(void) {
pthread_t thread1, thread2;
char *message1;
char *message2;
message1 = (char *) malloc(sizeof(char) * 18);
message2 = (char *) malloc(sizeof(char) * 18);
strcpy(message1, "Thread 1");
strcpy(message2, "Thread 2");
int i1, i2;
/* 创建两个线程 */
i1 = pthread_create(&thread1, NULL, print_hello, (void *) message1);
i2 = pthread_create(&thread2, NULL, print_hello, (void *) message2);
/* 等待两个线程结束 */
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
printf("Thread 1 ends.\n");
printf("Thread 2 ends.\n");
exit(0);
}
gcc -pthread multithread_example.c -o multithread_example
这里,-pthread
选项告诉GCC启用线程支持,链接pthread库,并设置适当的编译器标志。multithread_example.c
是源文件名,-o multithread_example
表示将编译后的程序命名为multithread_example
。
./multithread_example
这将输出以下内容:
Thread 1
Thread 2
Thread 1 ends.
Thread 2 ends.
这就是在Ubuntu上使用GCC编译多线程程序的方法。