1,有多个子窗口类,窗口中都有定时器,都定时为1秒,并且主窗口也有定时器为1秒,那么时间到了,这多个子窗口和主窗口的定时器消息响应函数程序时同时执行的吗?2,程序中多个地方经常用CFile类打开同一个文本文件读取写入数据,会不会发生多个地方同时要打开同一个文件,那会不会程序出错呢?如果会怎么办,如何判断这么文件已经为打开了?
3,同一个SOCKET对象m_socket,m_socket在定时器中每隔一段时间发送数据,如果定义一个按钮消息响应函数,也是用m_socket发送消息,会出现什么问题,冲突吗?

解决方案 »

  1.   

    1.有先后的,而且据我所知,比如主窗口先响应这个OnTimer,那么其他窗口的WM_TIMER消息就被冲掉了,也就是不会响应了。
    2.这就是临界资源访问的问题了,当一个进程在访问这个文件的时候,要将其lock,具体怎么实现,我也说不清,总之两个线程抢一个文件,肯定要出事的。
    3.有可能会出现两个m_socket发的数据交叉的情况。
      

  2.   

    1 定时器是响应窗口的WM_TIMER,和其他消息完全一样,指定的窗体响应。这也说明,不要每窗口都设定时器,比如定时弹消息,会让人疯掉的。最好一个定时器管理多个任务。写多了就熟悉了。
    2 打开文件时有参数选定,是独占打开,还是请允许其他进程同时访问。
    3 很正常的,C/S通话就是这样,用同一个socket不停地发。比如你用QQ聊天,一个tcp连接,每点一次"发送"都发不同的消息。
      

  3.   

    1,有多个子窗口类,窗口中都有定时器,都定时为1秒,并且主窗口也有定时器为1秒,那么时间到了,这多个子窗口和主窗口的定时器消息响应函数程序时同时执行的吗?
    ==================
    不会同时执行的,定时器是基于WM_TIMER消息的,你这个是单线程的程序,不可能同时执行,肯定有先后。谁的消息先到谁先执行。2,程序中多个地方经常用CFile类打开同一个文本文件读取写入数据,会不会发生多个地方同时要打开同一个文件,那会不会程序出错呢?如果会怎么办,如何判断这么文件已经为打开了?
    =================================================
    打开一个文件读写完之后关闭就行了。因为你的程序不是多线程,所以不会出现同时打开同一个文件,只能出现文件打开后没有关闭的情况下再次打开,所以只要打开读写完之后关闭就不会有问题。
      

  4.   

    1:WM_TIMER是单线程,怎么可能同时进行,是有优先级的。
    2:打开文件时有参数选定,是独占打开,还是请允许其他进程同时访问
    3:这个问题和第一个一样,如果你m_socket放在定时器中并且没有另开线程的话,那么你点击了按钮后,定时器消息和按钮的消息是会有优先级放入消息堆栈中,因此是不会发生冲突的