线程里面,事件比sleep等待好在哪里?

稀饭桶子 发布于 2017/02/07 18:50
阅读 456
收藏 0

结贴了,谢谢大家。

问题描述得不是很清楚,抱歉

加载中
0
乌龟壳
乌龟壳

事件?c#?

0
k
kchr

和效率无关, 等待线程结束,就应该用 join 啊。 sleep 的逻辑是错误的。 不是喷你,大神说的对, 用 sleep 确实是素养有问题啊。

 

k
kchr
回复 @稀饭桶子 : 一定要这样设计,那也没啥。地球还是照样转。
稀饭桶子
稀饭桶子
回复 @kchr : 我的线程是放在类里面的。然后这个类又创建了全局对象,线程detach运行。 假如程序退出了,调用到了析构函数,但是线程还在运行。 我就给线程发送一个退出信号,usleep等待线程结束。 我的业务的这样的。。。
k
kchr
回复 @稀饭桶子 : 我自己是没碰到过需要 detach 的情况。detach 的语义就是:在我这个特定场合下,我需要让这个线程自生自灭了,撒手不管了。既然你需要在析构函数里处理,就和 detach 的目的冲突啊。
稀饭桶子
稀饭桶子
回复 @kchr : 好吧,反正我的线程只是一个类成员。 线程还没结束,类对象已经析构了。 线程已经detach运行 ,我确实不知道detach 之后能够再join。
k
kchr
回复 @稀饭桶子 : 等待线程退出的方法就是 join 啊,不明白为啥要循环或者 sleep。
下一页
0
iBoxDB
iBoxDB

如果不做多线程数据同步,Sleep(0)就足够了,事件还要分配信号变量,用完还要回收信号,一个系统不能到处是信号,但可以到处是sleep

iBoxDB
iBoxDB
回复 @稀饭桶子 : 还是要根据实际情况,怎么会跑出一个析构函数出来,这函数一般都不用。
稀饭桶子
稀饭桶子
赞赞赞。我还是感觉写程序够用就行,简单最好。
0
稀饭桶子
稀饭桶子

引用来自“iBoxDB”的评论

如果不做多线程数据同步,Sleep(0)就足够了,事件还要分配信号变量,用完还要回收信号,一个系统不能到处是信号,但可以到处是sleep

0
乌龟壳
乌龟壳

看了半天总算看明白了。

一般来说,一个线程等待另一个线程结束,使用join是最佳的,无论从性能和资源消耗上来说都是,而且代码简单就一个函数调用,何乐不为?

返回顶部
顶部