我有一個pthread對某些文件描述符進行無限輪詢,並帶有負超時參數。如何從主線程中優雅地阻塞pthread退出?
從主線程,我希望能夠向輪詢線程表明它應該退出。
我做了一些研究,發現了以下方法:
使用pthread_cancel可以():這是氣餒,因爲這可能導致不清除任何保留的資源或互斥
使用的意想不到的後果一個變量作爲標誌並將其設置在主線程中。輪詢線程每次迭代檢查該標誌,如果設置,則通過調用pthread_exit()退出。這種方法是行不通的,因爲我的輪詢線程不循環,而是無限期地阻塞,等待文件描述符。
任何人都可以提出一個優雅的解決方案來解決這個問題嗎?
謝謝! ASM
添加一個eventfd到你信號終止的混音? –
這是一個很好的建議。我可以嘗試。謝謝! –