社区
Linux/Unix社区
帖子详情
pthread一问
morphis
2004-06-21 04:20:08
用joinable和detached模式创建线程分别有什么区别?
...全文
106
9
打赏
收藏
pthread一问
用joinable和detached模式创建线程分别有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blankman
2004-07-02
打赏
举报
回复
转载的,原出处在这里 :)
http://www-900.ibm.com/developerWorks/cn/linux/thread/posix_threadapi/part4/index.shtml
blankman
2004-07-02
打赏
举报
回复
pthread_join()的调用者将挂起并等待th线程终止,retval是pthread_exit()调用者线程(线程ID为th)的返回值,如果thread_return不为NULL,则*thread_return=retval。需要注意的是一个线程仅允许唯一的一个线程使用pthread_join()等待它的终止,并且被等待的线程应该处于可join状态,即非DETACHED状态。
如果进程中的某个线程执行了pthread_detach(th),则th线程将处于DETACHED状态,这使得th线程在结束运行时自行释放所占用的内存资源,同时也无法由pthread_join()同步,pthread_detach()执行之后,对th请求pthread_join()将返回错误。
一个可join的线程所占用的内存仅当有线程对其执行了pthread_join()后才会释放,因此为了避免内存泄漏,所有线程的终止,要么已设为DETACHED,要么就需要使用pthread_join()来回收。
pacman2000
2004-07-02
打赏
举报
回复
继续执行
blackheart99
2004-07-02
打赏
举报
回复
如果主线程(该主线程可以是主进程,也可以是主进程产生的线程)中止了,detached的子线程怎么样?
101monster
2004-07-02
打赏
举报
回复
呵呵,UP!
gaoxianfeng
2004-07-02
打赏
举报
回复
开发当中经常要 detached 线程
CsdnRob
2004-07-02
打赏
举报
回复
同意上面的说法
yl243
2004-06-22
打赏
举报
回复
同意上面的说法
linaxing
2004-06-21
打赏
举报
回复
线程的分离状态决定一个线程以什么样的方式来终止自己。joinable为非分离状态,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而detached线程不是这样子的,它没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。
面试必问之AQS原理详解.pdf
AQS 原理 lock 最 常 用 的 类 就 是 ReentrantLock , 其 底 层 实 现 使 用 的 是 AbstractQueuedSynchronizer(AQS) 简单来说 AQS 会把所有的请求线程构成一个 CLH 队列,当一个线程执行完毕 (lock.unlock())时会激活自己的后继节点,但正在执行的线程并不在队列中, 而那些等待执行的线程全部处于阻塞状态,经过调查线程的显式阻塞是通过调用 LockSupport.park() 完成,而 LockSupport.park() 则调用 sun.misc.Unsafe.park()本地方法,再进一步,HotSpot 在 Linux 中中通过调用 p
thread
_mutex_lock 函数把线程交给系统内核进行阻塞。
Win丨linux丨操作系统实验二:生产者——消费者问题
操作系统实验二:生产者——消费者问题 1. 在Windows操作系统上,利用Win32 API提供的信号量机制,编写应用程序实现生产者——消费者问题。 2. 在Linux操作系统上,利用P
thread
API提供的信号量机制,编写应用程序实现生产者——消费者问题。 3. 两种环境下,生产者和消费者均作为独立线程,并通过empty、full、mutex三个信号量实现对缓冲进行插入与删除。 4. 通过打印缓冲区中的内容至屏幕,来验证应用程序的正确性。
LangCompareV2:LangCompare是一个应用程序,可以对多种语言的代码进行基准测试
支持平台 Linux 苹果系统 支持的语言 通过clang ++或g ++编译器进行C ++ Python> = 3.7 有关LangCompare的体系结构的说明以及有关贡献的信息,请参见CONTRIBUTING.rst。 我们非常乐意提供对您喜欢的语言,其他算法演示以及有趣功能的支持。 为什么 语言之间在运行时效率方面的差异是开发人员之间偶尔讨论的话题。 LangCompare是用于计时和比较多种语言代码效率的简单工具。 如何 选择您想要计时的代码文件。 LangCompare将进行编译(如有必要),然后在子进程中运行文件,以计时代码完成所需的时间。 常问问题 LangCompare将哪些编译器设置用于其编译的代码? C ++当前使用-O3标志通过编译器优化进行编译,并使用-p
thread
标志支持多线程。 将来,我们希望为用户提供定义自己的编译器选项的功能。 我的代码包含其
p
thread
_join 两次同一个线程
现象:我先创建两个线程 A和B,将其线程ID保存下来。 然后依次p
thread
_join 这两个线程。然后创建一个新的线程C。 然后我再次p
thread
_join 线程A和B。 结果发现他们两个之中一个会返回成功。 原因: 因为线程C的线程ID和线程A和B之中的一个相同。导致我对同一个线程p
thread
_join 两次,分别p
thread
_join 了不同的线程。 措施: 在调用
p
thread
_cond_wait
为什么p
thread
_cond_wait需要互斥锁mutex作为参数 通常的应用场景下,当前线程执行p
thread
_cond_wait时,一定是处于某个临界区,正在访问共享资源,存在一个mutex与该临界区相关联。因此,在阻塞前,必须释放mutex;被唤醒后,仍然处于临界区,因此需要再次获得mutex。 目录 为什么是p
thread
_cond_wait(cond, mutex)而不是p
thread
_cond_wait(cond) 生产者和消费者问题的介绍 用于同步和互斥的全局变量 使用p
thread
..
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章