我有一些关于linux中的线程的问题:
pthread_t是一种类似于int和char的数据类型,表示我们正在定义一个线程?pthread_t thread1,还是等待pthread_create()调用?pthread_create()调用中只能传递多个参数吗?如果是这样的话,是怎么做的?我脑子里有很多事情像这样。也请随时建议任何好的网站或文件阅读。
发布于 2011-06-21 03:49:56
一个接一个地回答问题,虽然不一定按相同的顺序回答:
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);这是创建变量的第一行,尽管它在pthread_create返回之前不保存任何有用的内容。
pthread_t 的大小是2字节还是4字节?
您不应该关心它占用了多少空间,也不应该关心FILE结构占用了多少空间。您应该按预期使用该结构。如果你真的想知道,那么sizeof就是你的朋友。
有关如何设置线程属性的好信息吗?
如果您想使用默认属性以外的任何其他属性,您必须首先创建一个属性变量,然后将其传递给pthread_create调用。
在pthread_create 函数中,只能传递一个参数给函数吗?我们不能在pthread_create() 函数中向被调用的线程发送2或3个参数吗?
虽然只允许向线程传递一个额外的参数,但是没有什么可以阻止您将这个参数作为指向包含100个不同事物的结构的指针。
如果你在寻找关于如何使用线程的信息,谷歌搜索的末尾有很多东西,但我自己还是更喜欢死树版本:

发布于 2011-06-21 03:50:03
发布于 2011-06-21 03:54:25
pthread_t可以是任意数量的字节。它可以是一个字符,一个int,一个指针,或者一个结构.但你不需要知道也不需要关心。如果为分配目的需要大小,则使用sizeof(pthread_t)。唯一可以将其赋值给的变量类型是另一个pthread_t。
在定义pthread_t时,编译器可能分配或不分配与线程关联的资源。同样,您不需要知道也不需要关心,因为您需要在创建的任何线程上调用pthread_join (或pthread_detach)。只要您遵循规则,系统将确保它不会泄漏内存(或任何其他资源)。
诚然,属性有点笨拙。它们保存在pthread_attr_t对象中,该对象也可以表示为整数、指针或整个结构。您必须用pthread_attr_init初始化它,用pthread_attr_destroy销毁它。在这两者之间,使用各种pthread_attr_...调用来设置或清除属性,然后可以将其作为一个或多个pthread_create调用的一部分传递给新线程的属性。
不同的实现可以并将以不同的方式处理所有这些事情。
https://stackoverflow.com/questions/6420090
复制相似问题