Fw: [問題] 請問linux settimer()的問題

看板Programming作者 (2orx)時間13年前 (2012/03/13 17:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 C_and_CPP 看板 #1FNnS9am ] 作者: hn12303158 (2orx) 看板: C_and_CPP 標題: [問題] 請問linux settimer()的問題 時間: Tue Mar 13 17:44:38 2012 請問各位先進, 在linux環境single thread的程式架構下使用settimer()是否需要注意 mutex相關問題? 為了能更清楚解釋我的問題, 我舉下列情境: 1. 一支single thread程式, 在main裡有無限迴圈作一些工作(如socket收封包然後 作處理) 2. 程式有一個global var: int n = 0; 3. 在main()的一開始使用linux api setimer()註冊timer, 預計5秒後timeout 4. timeout的callback function和main()的迴圈裡都可能對n作操作 老實講我從來都沒聽過single task需要注意critical section的問題, 但難道沒有可能發生以下狀況嗎? 1.在main()裡程式正對n進行運算(e.g. n++) 2.timeout發生, SIGALRM被發送至process, 導致callback function被觸發 3.callback中同樣對n作運算, 但因原本在main()中的"n++"尚未完成(instruction沒有 全部作完)就被SIGALRM trigger到callback function, 最後n的值錯誤 我會有這個問題, 應該是因為我對signal機制的原理不夠了解, 煩請各位先進 替我解惑一下, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.101.23 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: hn12303158 (140.96.101.23), 時間: 03/13/2012 17:54:16
文章代碼(AID): #1FNnbAfN (Programming)
文章代碼(AID): #1FNnbAfN (Programming)