C中线程的简单示例

有人可以发布一个在C中启动两个(面向对象)线程的简单示例.

我正在寻找实际的C线程对象,我可以扩展运行方法(或类似的东西)而不是调用C风格的线程库.

更新 – 我遗漏了任何特定于操作系统的请求,希望无论谁回复都会回复使用跨平台库.我现在只是明白了.

最佳答案
创建一个您希望线程执行的函数,例如:

void task1(std::string msg)
{
    std::cout << "task1 says: " << msg;
}

现在创建最终将调用上述函数的线程对象,如下所示:

std::thread t1(task1, "Hello");

(你需要#include< thread>来访问std :: thread类)

构造函数的参数是线程将执行的函数,后跟函数的参数.线程在构造时自动启动.

如果稍后您要等待线程执行该函数,请调用:

t1.join(); 

(加入意味着调用新线程的线程将等待新线程完成执行,然后才会继续自己的执行).

代码

#include <string>
#include <iostream>
#include <thread>

using namespace std;

// The function we want to execute on the new thread.
void task1(string msg)
{
    cout << "task1 says: " << msg;
}

int main()
{
    // Constructs the new thread and runs it. Does not block execution.
    thread t1(task1, "Hello");

    // Do other things...

    // Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution.
    t1.join();
}

More information about std::thread here

>在GCC上,使用-std = c 0x -pthread进行编译.
>这适用于任何操作系统,授予您的编译器支持此(C 11)功能.

转载注明原文:C中线程的简单示例 - 代码日志