一个单线程程序中两个函数,一个CSocket数据接收处理函数中对数据data进行了重新初始化操作,另外一个OnTimer函数,进行数据的显示操作,这样会出现数据冲突吗?(就是说OnTimer函数执行到一半的时候前一个函数被处理了),按照单线程函数来说应该不会,但是这个困惑源自于我遇到的另外一个问题:一个别的程序给我发CSocket消息,就是在CSocket数据接收处理函数中打出一个MessageBox,按照我对单线程的理解第一次打出MessageBox之后程序应该停止了,但是这个时候其实还是会谭出下一个MessageBOx,所以就问下达人们怎么理解单线程这个东西,是不是只要单线程就不用管数据同步的问题?是的话如何理解我遇到的那个现象呢?是因为MessageBox的原因吗?在线等待
解决方案 »
- 线程退出时绑定的socket端口号不释放
- 求一个*.pps或者*.ppt文件的ico图标
- 请高手关注一下,谢谢
- 我做了个切分窗口的程序,是在SDI下的,切分成两个窗口,左边一个窗口是基于CForView的,紧急等待解决中。。。
- 主窗口下一个非模态对话框,遇到奇怪问题,请帮忙,内祥
- 有关runtime_class机制
- 数据源不能添加问题...
- :::::为什么WM_DESTROY会发送2次?
- 我有一位图数据,用unsigned char *指出,知道宽高。怎么画到屏幕?
- 帮忙啊!有谁知道dbgrid的详细用法 在线等
- raw socket 的recv阻塞问题
- openMP程序的部署问题,在线等候~~~~~~~~~~~~~~~~~~~~~~
上面的现象是因为:每个线程有一个消息队列,线程中创建的所有窗口的消息都通过这个消息队列来传递,MessageBox函数内部有消息循环处理代码,所以当消息队列中收到Socket消息时,也会得到响应。如果你把MessageBox换成其它没有消息循环的函数,例如Sleep,就不会有这种现象了。