多线程编程与ZeroMQ:原理、实践与调度
1. 多线程基础
1.1 线程创建与限制
在C语言中,我们可以使用 pthread 库来创建线程。以下是一个简单的示例代码:
int main(int argc, char *argv[])
{
pthread_t t;
printf("Main thread, PID %d TID %d\n",
getpid(), (pid_t)syscall(SYS_gettid));
pthread_create(&t, NULL, thread_fn, NULL);
pthread_join(t, NULL);
return 0;
}
在 thread_fn 函数中,我们可以使用 syscall(SYS_gettid) 来获取线程ID。在glibc 2.80之前,由于没有 gettid 的C库包装器,我们必须通过系统调用直接调用Linux。
每个内核能够调度的线程总数是有限的,这个限制会根据系统的大小而变化,从小型设备上的约1000个到大型嵌入式设备上的数万个不等。实际的线程数量限制可以在 /proc/sys/kernel/threads-max 文件中查看。一旦达到这个限制, fork 和 pthread_create 操作将会失败。
超级会员免费看
订阅专栏 解锁全文
45

被折叠的 条评论
为什么被折叠?



