Linux中的pthread概念

kar*_*hik 8 linux multithreading pthreads

我对linux中的pthreads有一些疑问:

  1. 是这样的情况,pthread_t它是一个类似的数据类型,intchar表明我们正在定义一个线程?
  2. 如果是这样,它需要多大的尺寸?2个字节还是4个字节?
  3. 编译器是pthread_t thread1在该语句之后立即分配内存还是等到pthread_create()调用之后?
  4. 如何设置线程属性,它们的典型用途是什么?
  5. 一个人只能在pthread_create()通话中传递多个参数吗?如果是这样,怎么样?

我有很多这样的想法.也请随时建议任何好的网站或文件阅读.

pax*_*blo 9

逐个回答问题,但不一定按照相同的顺序:

pthread_t一个类似于int或的数据类型char,表明我们正在定义一个线程?编译器是否pthread_t thread1在该句子之后立即分配内存,或者等待它直到找到该pthread_create()调用

pthread_t是一种类似于int它的类型,它是在您定义它时创建的,而不是在您调用时创建的pthread_create.在摘录中:

pthread_t tid;
int x = pthread_create (&tid, blah, blah, blah);
Run Code Online (Sandbox Code Playgroud)

它是创建变量的第一行,尽管在返回之前它没有任何有用的东西pthread_create.

需要多少大小pthread_t,2个字节或4个字节?

你不应该关心它需要多少空间,而不是你应该关心一个FILE结构占用多少空间.您应该按预期使用该结构.如果你真的想知道,那么sizeof就是你的朋友.

有关如何设置线程属性的任何好信息?

如果要使用除默认属性以外的任何内容,则必须先创建属性变量,然后将其传递给pthread_create调用.

我们只能将函数中的一个参数传递pthread_create给函数吗?我们不能在pthread_create()函数中向被调用的线程发送2或3个参数吗?

虽然你只允许向线程传递一个额外的参数,但没有什么可以阻止你使这个参数成为一个指向一个容纳一百个不同东西的结构的指针.


如果您正在寻找有关如何使用pthread的信息,那么Google搜索结束时会有很多内容,但我仍然更喜欢死树版本:

PThreads编程书,ISBN 13:978-1-56592-115-3,ISBN 10:1-56592-115-1