首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C中创建两个线程?

在C语言中创建两个线程可以使用pthread库来实现。下面是一个简单的示例代码:

代码语言:txt
复制
#include <stdio.h>
#include <pthread.h>

void* thread_func1(void* arg) {
    printf("Thread 1\n");
    return NULL;
}

void* thread_func2(void* arg) {
    printf("Thread 2\n");
    return NULL;
}

int main() {
    pthread_t thread1, thread2;

    // 创建线程1
    if (pthread_create(&thread1, NULL, thread_func1, NULL) != 0) {
        printf("Failed to create thread 1\n");
        return 1;
    }

    // 创建线程2
    if (pthread_create(&thread2, NULL, thread_func2, NULL) != 0) {
        printf("Failed to create thread 2\n");
        return 1;
    }

    // 等待线程1和线程2结束
    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);

    return 0;
}

在上面的代码中,我们定义了两个线程函数thread_func1thread_func2,分别用于线程1和线程2的执行逻辑。pthread_create函数用于创建线程,它接受四个参数:线程标识符、线程属性、线程函数、线程函数的参数。pthread_join函数用于等待线程结束。

这是一个简单的创建两个线程的示例,实际应用中可能需要更复杂的线程逻辑和线程间的同步与通信。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Go 语言并发编程系列(二)—— Go 协程实现原理和使用示例

    Go 语言的协程实现被称之为 goroutine,由 Go 运行时管理,在 Go 语言中通过协程实现并发编程非常简单:我们可以在一个处理进程中通过关键字 go 启用多个协程,然后在不同的协程中完成不同的子任务,这些用户在代码中创建和维护的协程本质上是用户级线程,Go 语言运行时会在底层通过调度器将用户级线程交给操作系统的系统级线程去处理,如果在运行过程中遇到某个 IO 操作而暂停运行,调度器会将用户级线程和系统级线程分离,以便让系统级线程去处理其他用户级线程,而当 IO 操作完成,需要恢复运行,调度器又会调度空闲的系统级线程来处理这个用户级线程,从而达到并发处理多个协程的目的。此外,调度器还会在系统级线程不够用时向操作系统申请创建新的系统级线程,而在系统级线程过多的情况下销毁一些空闲的线程,这个过程和 PHP-FPM 的工作机制有点类似,实际上这也是很多进程/线程池管理器的工作机制,这样一来,可以保证对系统资源的高效利用,避免系统资源的浪费。

    02
    领券