面向初学者的 C++ 非阻塞编程
Non blocking programming in c++ for beginner
我是 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
) 自己实施该机制
简单的并行编程
一般来说,您有一个主要的 Thread
,它正在执行 main function
(程序的入口点)中定义的内容。
在演示示例中,将生成另一个这样的 Thread
,它正在执行与主线程并行的单独函数 (foo
) 中定义的代码。你不知道这个线程什么时候开始工作,也不知道它什么时候结束。这取决于线程调度机制(那是另一个话题)...
异步和同步是什么意思?
...但是您可以查询线程的状态,接收回调,当它们完成时(异步编程)或者阻塞等待直到它们完成(同步编程)。这两种方法都可能变得非常复杂,您可能 运行 陷入同步问题...
并行编程中的库与自定义实现
... 这就是为什么在并行编程时经常推荐使用库的原因。 Boost
是一个很好的平台独立库。您基本上可以执行与 Threads
相同的操作,但方式更明确,不易出错。 Tutorial
相比之下,自定义 实现具有像 Threads
这样的低级机制,提供了更细粒度的好处,并且是寻求更多个性化解决方案的方式。
最后的话
我建议您对两者都做一些快速教程。 Boost
的一个易于遵循的 link 在上面,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;
}
我是 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
) 自己实施该机制
简单的并行编程
一般来说,您有一个主要的 Thread
,它正在执行 main function
(程序的入口点)中定义的内容。
在演示示例中,将生成另一个这样的 Thread
,它正在执行与主线程并行的单独函数 (foo
) 中定义的代码。你不知道这个线程什么时候开始工作,也不知道它什么时候结束。这取决于线程调度机制(那是另一个话题)...
异步和同步是什么意思?
...但是您可以查询线程的状态,接收回调,当它们完成时(异步编程)或者阻塞等待直到它们完成(同步编程)。这两种方法都可能变得非常复杂,您可能 运行 陷入同步问题...
并行编程中的库与自定义实现
... 这就是为什么在并行编程时经常推荐使用库的原因。 Boost
是一个很好的平台独立库。您基本上可以执行与 Threads
相同的操作,但方式更明确,不易出错。 Tutorial
相比之下,自定义 实现具有像 Threads
这样的低级机制,提供了更细粒度的好处,并且是寻求更多个性化解决方案的方式。
最后的话
我建议您对两者都做一些快速教程。 Boost
的一个易于遵循的 link 在上面,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;
}