当前位置:  开发笔记 > 编程语言 > 正文

面向初学者的C ++非阻塞编程

如何解决《面向初学者的C++非阻塞编程》经验,为你挑选了1个好方法。

我是C ++的初学者。我刚刚开始学习c ++。我想问一下是否有可能以简单的方式用c ++编写非阻塞编程。我怎么说,我还不了解非常复杂的代码。我打算这样

do {
    //do stuff
    sleep(5);
    i++;
} while(i != 1000);
cout << "Enter the value : "; 
cin >> inputvale;

虽然do {} while();循环正在循环,但同时我想使用coutcin

问题: 有什么办法可以做到这一点?



1> MarkusAtCvla..:

您可以通过一些选项在中进行异步编程C++

提供异步编程机制的库

通过使用C++运行时为您提供的功能(例如Threads)自己实现该机制

简单的并行编程

通常,您有一个main Thread(正在执行),它在main function(程序的入口)中定义。

在演示示例中,Thread将生成另一个这样的代码,它正在执行代码,该代码foo在与主线程并行的单独函数()中定义。您不知道该线程何时执行工作或何时完成。这取决于线程调度机制(这是另一个主题)...

异步和同步意味着什么?

...但是,您可以查询线程的状态,在线程完成时接收回调(异步编程)或阻塞等待直到线程完成(同步编程)。两种方法都可能变得非常复杂,并且您可能会遇到同步问题...

并行编程中的库与定制实现

...这就是为什么在并行编程中经常建议使用库的原因。一个好的平台独立库是Boost。基本上,您可以执行与方法相同的操作,Threads但是可以使用更明确的方式进行操作,这样就不容易出错。讲解

相比之下,具有低级机制的自定义实现(例如)Threads具有更多粒度的好处,并且是寻求更多个性化解决方案的方式。

最后的话

我建议您对两者都做一些快速教程。上面有一个易于遵循的链接,下面是我的示例BoostThread它是编程的切入点。

#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;
}

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有