📅  最后修改于: 2023-12-03 15:07:12.954000             🧑  作者: Mango
在 C 编程语言中,我们可以通过使用 pthread_create
函数来创建线程。该函数的原型如下:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
其中, thread
参数是一个指向 pthread_t
类型的变量地址,该变量用于存储新创建的线程的 ID。attr
参数指向一个线程属性对象,它描述了新线程的属性。start_routine
参数是一个指向函数的指针,该函数将作为新线程的起始例程运行。 arg
参数是一个指向传递给 start_routine
函数的参数。
下面是一个简单的示例,展示如何使用 pthread_create
函数创建一个新线程:
#include <stdio.h>
#include <pthread.h>
void *print_message_function(void *ptr);
int main()
{
pthread_t thread1, thread2;
char *message1 = "Thread 1";
char *message2 = "Thread 2";
int ret1, ret2;
ret1 = pthread_create(&thread1, NULL, print_message_function, (void*)message1);
if(ret1)
{
fprintf(stderr, "Error - pthread_create() return code: %d\n",ret1);
return 1;
}
ret2 = pthread_create(&thread2, NULL, print_message_function, (void*)message2);
if(ret2)
{
fprintf(stderr, "Error - pthread_create() return code: %d\n",ret2);
return 1;
}
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}
void *print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s \n", message);
}
上述代码将创建两个新线程,每个线程都调用 print_message_function
函数,并打印一个消息。主函数等待两个线程结束后才会退出。
在 Linux 系统上,首先需要链接 -pthread
标志来编译该程序,如下所示:
gcc -pthread main.c -o main
执行编译后的程序,您将看到以下输出:
Thread 1
Thread 2
以上就是 C 编程语言中创建线程的介绍。您可以进一步探索线程相关的函数,如 pthread_join
、pthread_detach
、pthread_exit
等等,以更好地理解和使用 C 中的线程。