在window下编程,使用C/C++。
_pipe()函数创建的管道,不能使用非阻塞方式。我想达到的目的:
两个线程传递信息,一端不定时写入信息,另一端读,如果超时没有信息,做其他事情。
也可以不使用管道。
请大虾指点。

解决方案 »

  1.   

    管道如果缓冲未满写时会很快返回,但对读来说,如果读不到数据它会一直阻塞,超时怎么设我也不知道。建议还是用其它方式吧, 若果在进程内,你就用Event吧
      

  2.   

    Event?
    那是窗口里的东西吧?
      

  3.   

    偶正在做这方面的工作,不过今天下班了,明天去秋游,WAIT先了:)
      

  4.   

    管道:_pipe()
    在win32下,也可用其他,CreatePipe(),CreateNamePipe()...
    具体自己想一想,不是很难的。
      

  5.   

    to:jincai78(陈进) 
    这些函数我都知道,也查过帮助,但是,没找到哪一个提供非阻塞方式,以及怎样超时退出。如果是在unix下,我有两种办法可以实现:
    第一种,将管道设置成非阻塞方式,自己定时。
    第二种,将管道设置成阻塞方式,调用select()函数。但是,Windows下的管道功能不一样,没有这些功能,也许是我不知道,也许是Windows太弱。还请高手指点!
      

  6.   

    线程传递信息不必复杂的,用共享数据就可以.等待用Event是对的.
    DWORD WaitForSingleObject(
      HANDLE hHandle,        // handle to object
      DWORD dwMilliseconds   // time-out interval
    );
    可以超时返回.
      

  7.   

    rady88(猫):没用过c/c++的管道
    但是在WIN32的管道里可以这样请看我这个帖子里的回答http://expert.csdn.net/Expert/topic/1149/1149047.xml?temp=.2565119
      

  8.   

    谢谢 snsins(但使龙城飞将在,不教胡马度阴山) 。这样基本上可以解决问题了。
    虽然看起来不如unix下的好用。