📜  线程函数 (1)

📅  最后修改于: 2023-12-03 15:41:14.633000             🧑  作者: Mango

线程函数

线程是一种轻量级的并发执行方式,它可以在同一个进程中同时执行多个代码路径,从而实现并发处理。线程函数是执行线程的代码,它通常包含在一个线程对象中。

基本概念
线程

线程是操作系统能够轻松创建和管理的最小执行单位。在同一个进程内的多个线程可以共享内存和资源,并可以同时运行。

线程函数

线程函数是执行线程的函数。在C++中,线程函数通常是一个成员函数或一个全局函数。在线程对象的构造函数中,我们可以指定要执行的线程函数。

线程对象

线程对象是一个可执行的对象,它包含一个执行线程函数的线程。通过创建线程对象,在同一个进程中同时执行多个代码路径。

线程函数的定义

在C++中,线程函数通常是一个成员函数或者一个全局函数。在线程对象的构造函数中,我们可以指定要执行的线程函数。

下面是一个例子展示了如何定义一个线程函数:

#include <iostream>
#include <thread>

void foo()
{
    std::cout << "Hello from thread!\n";
}

int main()
{
    std::thread t(foo);
    t.join();

    return 0;
}

在这个例子中,我们定义了一个名为foo的线程函数,它会输出一条消息到标准输出流中。然后,我们通过调用std::thread的构造函数,创建了一个线程对象t,并指定要执行的线程函数为foo。最后,我们通过调用t.join()等待线程t的执行完成。

用lambda表达式定义线程函数

lambda表达式是一个C++11的新特性,它可以用于定义轻便、临时的函数。通过lambda表达式,可以简单地定义一个匿名函数,而不需要显式地声明一个函数。

下面是一个例子展示了如何使用lambda表达式定义一个线程函数:

#include <iostream>
#include <thread>

int main()
{
    std::thread t([]{
        std::cout << "Hello from thread!\n";
    });

    t.join();

    return 0;
}

在这个例子中,我们使用lambda表达式定义了一个简单的线程函数,它会输出一条消息到标准输出流中。然后,我们通过调用std::thread的构造函数,创建了一个线程对象t,并指定要执行的线程函数为lambda表达式。最后,我们通过调用t.join()等待线程t的执行完成。

总结

线程函数是执行线程的函数,它通常包含在一个线程对象中。在C++中,线程函数通常是一个成员函数或一个全局函数。通过创建线程对象,在同一个进程中同时执行多个代码路径。lambda表达式也可以用于定义线程函数,从而简化代码。