📜  创建线程 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:07:12.954000             🧑  作者: Mango

创建线程 - C 编程语言

在 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_joinpthread_detachpthread_exit 等等,以更好地理解和使用 C 中的线程。