C++下让一个函数阻塞,但整个进程不会挂起,这个函数并不在线程里解决办法
C++下让一个函数阻塞,但整个进程不会挂起,这个函数并不在线程里
如题,有这种功能的函数吗
如果用Sleep()的话,整个进程就会挂起,求解
------解决方案--------------------
sleep 进程怎么会挂起?你说的是ui线程挂起把?
------解决方案--------------------
楼主的意思是 在主线程中有个函数 想要这个函数运行到一半挂起 但是主线程不挂起
------解决方案--------------------
就是单线程模拟并发执行吧
比如一个逻辑是处理用户输入,另外一个逻辑是读文件处理。
主循环类似:
while(1){
uiProcess->run();
filePorcess->run();
}
然后uiProcess->run()和fileprocess->run()都必须是可退出重入的方法。
比如ui的话,可以每次处理一个消息,然后返回,多余的消息存队列。
file部分则可以每次处理一小段数据,记录处理到的位置,下次call时继续处理。
对于更复杂的功能用状态机实现:
另外有个简单点的实现方法:
使用2个脚本对象,逻辑写在脚本里面。然后每次执行一句脚本。
脚本可以代替状态机的控制。
这个实际就是一个比较粗糙的操作系统调度。不同的是操作系统按cpu时间片划分,我们只能按函数划分。
------解决方案--------------------
你主程序可以循环在那,另外得监听信号,当收到某个信号时就退出循环。
如题,有这种功能的函数吗
如果用Sleep()的话,整个进程就会挂起,求解
------解决方案--------------------
sleep 进程怎么会挂起?你说的是ui线程挂起把?
------解决方案--------------------
楼主的意思是 在主线程中有个函数 想要这个函数运行到一半挂起 但是主线程不挂起
------解决方案--------------------
就是单线程模拟并发执行吧
比如一个逻辑是处理用户输入,另外一个逻辑是读文件处理。
主循环类似:
while(1){
uiProcess->run();
filePorcess->run();
}
然后uiProcess->run()和fileprocess->run()都必须是可退出重入的方法。
比如ui的话,可以每次处理一个消息,然后返回,多余的消息存队列。
file部分则可以每次处理一小段数据,记录处理到的位置,下次call时继续处理。
对于更复杂的功能用状态机实现:
另外有个简单点的实现方法:
使用2个脚本对象,逻辑写在脚本里面。然后每次执行一句脚本。
脚本可以代替状态机的控制。
这个实际就是一个比较粗糙的操作系统调度。不同的是操作系统按cpu时间片划分,我们只能按函数划分。
------解决方案--------------------
你主程序可以循环在那,另外得监听信号,当收到某个信号时就退出循环。