我是C ++的初学者。我刚刚开始学习c ++。我想问一下是否有可能以简单的方式用c ++编写非阻塞编程。我怎么说,我还不了解非常复杂的代码。我打算这样
do { //do stuff sleep(5); i++; } while(i != 1000); cout << "Enter the value : "; cin >> inputvale;
虽然do {} while();
循环正在循环,但同时我想使用cout
和cin
。
问题: 有什么办法可以做到这一点?
您可以通过一些选项在中进行异步编程C++
。
提供异步编程机制的库
通过使用C++
运行时为您提供的功能(例如Threads
)自己实现该机制
通常,您有一个main Thread
(正在执行),它在main function
(程序的入口)中定义。
在演示示例中,Thread
将生成另一个这样的代码,它正在执行代码,该代码foo
在与主线程并行的单独函数()中定义。您不知道该线程何时执行工作或何时完成。这取决于线程调度机制(这是另一个主题)...
...但是,您可以查询线程的状态,在线程完成时接收回调(异步编程)或阻塞等待直到线程完成(同步编程)。两种方法都可能变得非常复杂,并且您可能会遇到同步问题...
...这就是为什么在并行编程中经常建议使用库的原因。一个好的平台独立库是Boost
。基本上,您可以执行与方法相同的操作,Threads
但是可以使用更明确的方式进行操作,这样就不容易出错。讲解
相比之下,具有低级机制的自定义实现(例如)Threads
具有更多粒度的好处,并且是寻求更多个性化解决方案的方式。
我建议您对两者都做一些快速教程。上面有一个易于遵循的链接,下面是我的示例Boost
,Thread
它是编程的切入点。
#include#include using namespace std; // Read one character from the commandline: void foo() { // Variable holding the character char inputValue; cout << "Enter the value : "; cin >> inputValue; } int main() { // Spawn new thread that calls foo() thread fooThread(foo); // This is your main loop: int i = 0; do { //do stuff i++; } while (i != 1000); return 0; }