首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++下让一个函数阻塞,但整个进程不会挂起,这个函数并不在线程里解决办法

2012-03-18 
C++下让一个函数阻塞,但整个进程不会挂起,这个函数并不在线程里如题,有这种功能的函数吗如果用Sleep()的话

C++下让一个函数阻塞,但整个进程不会挂起,这个函数并不在线程里
如题,有这种功能的函数吗
如果用Sleep()的话,整个进程就会挂起,求解

[解决办法]
sleep 进程怎么会挂起?你说的是ui线程挂起把?
[解决办法]
楼主的意思是 在主线程中有个函数 想要这个函数运行到一半挂起 但是主线程不挂起
[解决办法]
就是单线程模拟并发执行吧


比如一个逻辑是处理用户输入,另外一个逻辑是读文件处理。
主循环类似:

while(1){
 uiProcess->run();
 filePorcess->run();
}


然后uiProcess->run()和fileprocess->run()都必须是可退出重入的方法。

比如ui的话,可以每次处理一个消息,然后返回,多余的消息存队列。
file部分则可以每次处理一小段数据,记录处理到的位置,下次call时继续处理。

对于更复杂的功能用状态机实现:

另外有个简单点的实现方法:

使用2个脚本对象,逻辑写在脚本里面。然后每次执行一句脚本。

脚本可以代替状态机的控制。


这个实际就是一个比较粗糙的操作系统调度。不同的是操作系统按cpu时间片划分,我们只能按函数划分。



[解决办法]
你主程序可以循环在那,另外得监听信号,当收到某个信号时就退出循环。

热点排行