用alarm
函數,我想實現UDP重傳。這個函數線程安全嗎?它可以在多線程環境下工作嗎?是否報警(unsigned int second)函數thread_safe?
2
A
回答
0
按照docsalarm
是「流程級」,只有最後一次通話是活動......它使用的信號模型,併發送一個異步SIGALARAM的過程......被叫信號處理程序是否是線程安全取決於你的執行...
3
在一個線程中調用alarm()
不會重置待處理的信號,所以你可能不想把它稱爲在的一個線程。如果底層功能是pthreads,則只需在父代中調用它,而不管您使用何種語言。
你可能會更好做與線程共享需要重新發送數據,或者捅所有(或部分)正在運行的線程在父的信號服務重新發送結構的規定。
我想不出一個實現,其中稱這是一個線程內將是一個好主意,所以沒有 - 我不會使用這種方式。
2
報警()函數不是線程安全的。
因爲它是過程級別。一旦定時器觸發,您無法控制哪個線程應該接收信號。所以在信號到達時,另一個線程可能正在運行。有時它可能會導致您使用SIG_SEGV進行編程時崩潰。
相關問題
- 1. 調用'(std :: pair <unsigned int,unsigned int>)(unsigned int&,unsigned int)'
- 2. 錯誤:沒有匹配函數調用'min(long unsigned int&,unsigned int&)'
- 3. int是否與unsigned或signed相同?
- 4. 它是否有可能會將int *轉換爲unsigned int *
- 5. C++:編譯器警告大unsigned int
- 6. 函數__shfl_up(int var,unsigned int delta,int width)的width參數是什麼意思?
- 7. NSLogs中的unsigned int和unsigned long Xcode警告
- 8. Int或Unsigned Int浮動而不會收到警告
- 9. 理論上實現是否可以將unsigned int提升爲int?
- 10. 不能解決「警告:從'int'轉換爲'long unsigned int'」
- 11. 警報jquery函數
- 12. '*(unsigned int *)((unsigned int)block + n * i)是什麼意思'
- 13. C++如何檢查一個函數是否正在接收一個unsigned int?
- 14. 負unsigned int?
- 15. Java - derby - unsigned int
- 16. modulo with unsigned int
- 17. signed/unsigned int
- 18. unsigned long long int
- 19. encoding unsigned int
- 20. DWORD和unsigned int
- 21. 是否可以在javascript函數之外編寫警報消息?
- 22. 「unsigned int」打印爲負數?
- 23. long unsigned int和unsigned long int有什麼區別int
- 24. C/C++:如何正確地將「unsigned int *」值轉換爲「unsigned int」?
- 25. Compare int和unsigned int類型
- 26. 32位unsigned int php
- 27. 從函數返回警報
- 28. ByteBuffer解析unsigned int
- 29. 如何檢查類型是否是Java中的unsigned int或signed int?
- 30. unsigned long long VS unsigned long long int
你是否提到過文檔? –
請添加標籤 - 什麼語言? –