首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux中的线程概念

问linux中的线程概念
EN

Stack Overflow用户
提问于 2011-06-21 03:40:48
回答 4查看 15.6K关注 0票数 11

我有一些关于linux中的线程的问题:

  1. 是不是pthread_t是一种类似于int和char的数据类型,表示我们正在定义一个线程?
  2. 如果是的话,它需要多少大小?2字节还是4字节?
  3. 编译器是在该语句之后立即将内存分配给pthread_t thread1,还是等待pthread_create()调用?
  4. 如何设置线程属性,它们的典型用途是什么?
  5. 在pthread_create()调用中只能传递多个参数吗?如果是这样的话,是怎么做的?

我脑子里有很多事情像这样。也请随时建议任何好的网站或文件阅读。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-21 03:49:56

一个接一个地回答问题,虽然不一定按相同的顺序回答:

pthread_t 是一种类似于、int、或 char**,的数据类型,表示我们正在定义线程吗?编译器是在这句话之后立即将内存分配给** pthread_t thread1 ,还是等到找到 pthread_create() 调用时再执行

pthread_t是一种类似于int的类型,它是在定义它时创建的,而不是在调用pthread_create时创建的。在片段中:

代码语言:javascript
复制
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个不同事物的结构的指针。

如果你在寻找关于如何使用线程的信息,谷歌搜索的末尾有很多东西,但我自己还是更喜欢死树版本:

​

​

票数 12
EN

Stack Overflow用户

发布于 2011-06-21 03:50:03

需要多少尺寸?

pthread_t使用sizeof pthread_t字节。

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

你只需要一个论点。你所得到的只是一个论点。它是一个void *,所以您可以传递一个指向的指针。,比如包含多个值的结构。

我脑子里有很多东西,比如这样的建议:任何好的网站或文档都可以阅读。

查看pthread手册页、在线或您选择的shell (man pthread、man pthread_create等)。我开始阅读一些基本讲演幻灯片 (这里是续集)。

票数 2
EN

Stack Overflow用户

发布于 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调用的一部分传递给新线程的属性。

不同的实现可以并将以不同的方式处理所有这些事情。

LLNL有一套不错的介绍性信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6420090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档