C++ C++;标准支持流程?

C++ C++;标准支持流程?,c++,c++11,C++,C++11,我知道C++11增加了对线程的支持。例如: #include <iostream> #include <thread> void bar() { std::cout << "bar()\n"; } int main() { std::thread thread(bar); thread.join(); return 0; } #包括 #包括 空条() { STD::CUT< P>不,C++标准(特别是C++ 11)没有任

我知道C++11增加了对线程的支持。例如:

#include <iostream>
#include <thread>

void bar()
{
    std::cout << "bar()\n";
}

int main()
{
    std::thread thread(bar);
    thread.join();

    return 0;
}
#包括
#包括
空条()
{
STD::CUT< P>不,C++标准(特别是C++ 11)没有任何过程的概念(因此我不能给你一个更合理的引用,这里是从最流行的和目前最新的C++文档站点)。

我也不知道下一个标准版本C++-17(又名C++-1z)计划提供流程支持,至少《标准》没有提到这一点

有一个流行的建议,但它从来没有被绘制的C++标准提案。 您通常无法编写可移植代码来在裸机系统上运行,因为裸机系统中只存在一个进程


但是,是否有办法在单独的进程中执行
bar()
函数

最简单的方法是回退到POSIX开放组,并按照POSIX开放组的规定:

#include <iostream>
#include <unistd.h>
#include <sys/wait.h>

void bar()
{
    std::cout << "bar()\n";
}    

int main(int argc, char **argv)
{
    pid_t pid = fork();

    if (pid == 0)
    {
        // child process
        bar();
    }
    else if (pid > 0)
    {
        // parent process
        wait(NULL);    
    }
    else
    {
        // fork failed
        std::cerr << "fork() failed!" << std::endl;
        return 1;
    }


    return 0;
}
#包括
#包括
#包括
空条()
{
标准::cout(0)
{
//父进程
等待(空);
}
其他的
{
//fork失败了

std::cerrBoost在版本1.64.0中开始支持流程(2017年4月)


它是一个升迁功能,它是包含在未来C++标准中的一个希望。

<代码> FooOS/COD>不是标准库,它是POSIX函数。*检查C++ 11标准*No.*检查C++ 14标准*。*检查Nopopy NoPE。据我所知,没有将此纳入语言标准的原因。NO-C++不知道进程或共享进程内存或类似的…标准提到进程间通信在29.4 [原子。P3,但是在注释中。JAMESADKEIS:为了支持线程,必须改变C++语言以使线程成为可能。在C++ 11之前,语言无法用相同的程序来讨论多个执行路径。进程不需要这样的语言更改。它是纯库结构。问题的示例代码仅限于图。我不想在一个单独的进程中运行它。@ JAMESADKISY,那么你的问题是关于从你的代码开始另一个可执行文件,就像我提到的关于使用<代码> Excel()/代码>家庭函数的提示一样。C++标准支持的唯一功能是<代码> STD::Stand()
AFAIK,但它有它的局限性。注意:此解决方案在Windows中不能很好地扩展,执行
fork
等价物的速度非常慢。@πάνταῥεῖ 不,我对在一个单独的进程中运行代码感到好奇,而不是启动一个单独的可执行文件。也许我的例子只是混淆了这个问题?我只是想知道C++支持或计划支持进程,压倒一切的证据似乎是“不”。“没错,这正是我想用我的答案尽可能清楚地指出的。对于你的示例,坚持使用线程,你不需要另一个进程,所有必要的东西都已经在线程中共享了。