use*_*514 3 c++ multithreading nonblocking blocking
将等待/无等待指示符的概念添加到上述问题中作为TCP/IP或UDP环境中的ReadMessage函数的参数.
第三方功能描述指出:
此函数用于从队列中读取消息,该队列由先前的registerforinput调用定义.输入等待/无等待指示符将确定此函数是否将阻止指定的队列,等待数据放在队列中.如果指定了nowait选项且没有可用数据,则会将NULL指针返回给调用者.当可用数据时,此函数将返回指向从队列读取的数据的指针.
函数阻塞或非阻塞是什么意思?
阻止意味着您的代码(在该线程中)的执行将在调用期间停止.实质上,在阻塞操作完成之前,函数调用不会返回.
阻塞读取将等待,直到有可用数据(或超时,如果有的话,到期),然后从函数调用返回.非阻塞读取将(或至少应该)立即返回,但如果当前没有数据,则可能不会返回任何数据.
一个类比,如果你允许我 - 对不起,下午很晚了,我心情很好,如果它被否决了 - 嗯......
你想进一个时髦的夜总会,但保镖告诉你,除非有人出来,否则你不能进去。在这种情况下,您实际上被“阻止”了。当有人出来时,您可以自由进入 - 或者出现一些错误情况,例如“那些是培训师吗?” 你的夜晚并没有真正开始,直到你进入,你的享受被“阻止”了。
在“非阻塞”情况下,您将告诉保镖您的电话号码,他会在有空位时给您回电。因此,现在您可以在等待某人出来的同时做其他事情,您可以在其他地方开始您的夜晚,并在被召唤时返回并继续那里......
对不起,如果那没有帮助...