Fw: [問題] 請問linux settimer()的問題
※ [本文轉錄自 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
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
6
32