我希望讓一個線程睡眠時間不定數量不定的時間量。我想這樣做的原因是因爲我的程序只在接收到信號時才採取行動,並且在主線程中無關。因此,所有的處理都是在信號處理程序內完成的。我該如何無限期地睡覺?睡一個線程在Linux中
回答
我相信你正在尋找的pause
功能:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/pause.html
你可以這樣做:for (;;) pause();
如果你只是做一些在另一個線程,只需調用該線程pthread_join
,它會非常塊「永遠」。您可以使用條件變量實現相同的效果。
我同意克里斯。他建議你有主線程等待子線程退出,然後退出。這不僅會做你想做的,但如果孩子的線程死亡或死亡,防止殭屍。 –
這是一個絕妙的解決方案,克里斯!謝謝! – MetallicPriest
線程無法被殺死,並且不會像進程一樣成爲「殭屍」。如果你不關心加入一個線程,只需將它分離開始,這樣你就不必擔心清理線程描述符。 –
使用信號燈!
必須使用sem_wait
阻塞信號量的線程。一旦你需要通過使用另一個線程中的sem_post
來喚醒你的線程信號燈信號。
POSIX提供sigsuspend
函數等待的信號。 (正如在另一個回答中提到的,pause
也適用。)
- 1. linux線程,主要睡眠
- 2. 調用一個線程睡眠睡我的所有線程(JAVA)
- 3. 睡一個線程,直到在另一個線程中出現事件
- 4. 睡在一個線程而不會導致runOnUiThread睡眠
- 5. 當前線程在等待另一個線程時睡眠
- 6. 如何睡覺一個C++ Boost線程
- 7. C#:睡一個線程塊其他?
- 8. 從另一個睡眠線程
- 9. 睡覺一個新的線程c#
- 10. 線程 - 同步和睡眠線程拒絕喚醒(LINUX)
- 11. 如何在其他線程在VisualC#中工作時睡一個線程?
- 12. 殺死一個線程在android中的睡眠模式
- 13. 如何在Android中喚醒一個線程睡眠
- 14. 中斷睡眠線程
- 15. 睡眠時線程中斷
- 16. 單線程中斷睡眠
- 17. 線程中睡眠問題
- 18. 在C中中止睡眠線程#
- 19. 線程和睡眠()
- 20. WCF線程睡眠
- 21. Java線程睡眠
- 22. Andengine睡眠線程?
- 23. Openmp線程睡眠
- 24. 沉睡在C#線程池中
- 25. 線程在Tomcat中的睡眠
- 26. 睡覺/在CUDA線程中等待
- 27. 如何在睡眠中放棄線程
- 28. 如何喚醒C#.net中另一個線程的睡眠線程?
- 29. 一個線程中的Thread.sleep()使UI線程也進入睡眠狀態
- 30. 睡眠內線程沒有睡眠外線程 - Java
你實際上是使用線程還是隻是信號?如果線程,其他線程是什麼,他們在做什麼? (如果混合信號和線程有一些額外的工作要做,但是如果你只是使用「主線程」來表示程序中沒有在信號處理程序中執行的部分,那就不同了,並且意味着不同回答) – Random832