线程与ZeroMQ:深入解析与实践
1. 线程基础
线程的编程接口是POSIX线程API,也就是常说的pthreads,它最早在IEEE POSIX 1003.1c标准(1995年)中定义,作为libpthread.so C库的一部分实现。过去15年左右,pthreads有两种实现:LinuxThreads和Native POSIX Thread Library (NPTL)。NPTL更符合规范,特别是在信号和进程ID处理方面,现在占据主导地位,但可能会遇到使用LinuxThreads的旧版uClibc。
1.1 创建新线程
可以使用 pthread_create(3)
函数创建线程:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
该函数创建一个新的执行线程,从 start_routine
函数开始执行,并将线程描述符放入 pthread_t
中。新线程继承调用线程的调度参数,但可以通过 attr
指针覆盖这些参数。线程将立即开始执行。
以下是一个简单的示例程序,展示了线程的生命周期:
#include <stdio.h>
#include