作者littleboypis (littleboypis)
看板C_and_CPP
标题[问题] Pthread暂停和恢复功能
时间Sun Mar 8 16:43:08 2009
Pthread有暂停suspend和resume功能吗
因为我需要让Thread在执行到一半时暂停
像是
Work Thread Exec Body {
for( i = 1~100 ) {
call_action_1();
call_action_2();
call_action_3();
}
}
Another Thread {
pthread_suspend();
if( cond == true )
pthread_resume();
}
another thread执行了pthread_suspend
work thread就放下执行工作停下
可能停在任意的一行code上, 有可能是action1或者action3
不晓得Linux上的PThread有没有支援
我查google 和 API好像都没这两个功能
不晓得有什麽方式可以达到
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.216.117
※ littleboypis:转录至看板 Programming 03/08 16:43
1F:→ tinlans:有些系统会提供非标准的函式 (_np 结尾的 pthread 函式)。 03/08 16:52
2F:→ tinlans:譬如 FreeBSD 有 pthread_suspend_np, pthread_resume_np 03/08 16:54
3F:→ tinlans:不过有不少论点和实作经验证实这样设计程式很危险。 03/08 17:10
4F:→ softwind:用condition去挡吧 会需要突然去挡一个thread吗??? 03/08 20:37
5F:→ littleboypis:回softwind大,真的有此需要 得突然暂停某个Thread 03/08 20:42
6F:→ tinlans:一般不建议这麽做的理由就是你很难判断你 suspend 的 03/08 21:22
7F:→ tinlans:thread 目前到底在干什麽,或是做某件事做到什麽程度了。 03/08 21:22
8F:→ tinlans:比方说正在修改 linked list 的 pointer 到一半被停住,然 03/08 21:23
9F:→ tinlans:後那个 linked list 又马上被拿来存取。 03/08 21:23
10F:推 jlovet:喔喔,我好像认识你,你可以用 pthread_cond_wait 03/09 11:52
11F:→ jlovet:他是要暂停自己这个thread的话就没问题,但是不能中断别人 03/09 13:42