我是c ++中的初学者。我只是开始学习c ++。我想问一下,用c ++编写非阻塞编程是否可行。我怎么提起,我还不明白非常复杂的代码。我想要这样的东西
do {
//do stuff
sleep(5);
i++;
} while(i != 1000);
cout << "Enter the value : ";
cin >> inputvale;
do {} while();
循环正在循环,同时我想使用cout
和cin
。
问题:有没有办法做到这一点?
答案 0 :(得分:4)
您可以选择在C++
中进行异步编程。
C++
运行时为您提供的内容(例如Threads
)通常,您有一个主Thread
正在执行,main function
(程序的入口点)中定义的内容。
在演示示例中,将生成另一个此类Thread
,它正在执行代码,该代码在单独的函数(foo
)中定义,与主线程并行。你不知道这个线程什么时候开始工作,也不知道什么时候完成。它取决于线程调度机制(这是另一个主题)......
...但是你可以查询线程的状态,接收回调,完成后( Asyncronous programming )或阻塞等待它们完成(同步编程)。这两种方法都会变得非常复杂,您可能会遇到同步问题......
...这就是为什么在并行编程时经常建议使用库。一个好的和独立于平台的库是Boost
。你基本上可以和Threads
一样,但是以更明确的方式,这不容易出错。 Tutorial
与自定义实施相比,Threads
这样的低级别机制提供了更多粒度的好处,并且是获得更多个性化解决方案的方法。
我建议你对两者做一些快速教程。 Boost
的一个易于关注的链接在上面,Thread
编程的入口点是我在下面列出的示例。
#include <iostream>
#include <thread>
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;
}