作者hn12303158 (2orx)
看板Programming
标题Fw: [问题] 请问linux settimer()的问题
时间Tue Mar 13 17:54:16 2012
※ [本文转录自 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