首页主机资讯C++在Linux环境下如何实现多线程

C++在Linux环境下如何实现多线程

时间2025-10-21 12:04:04发布访客分类主机资讯浏览1328
导读:在Linux环境下,C++可以通过多种方式实现多线程。以下是几种常见的方法: 1. 使用POSIX Threads (pthreads POSIX Threads(通常称为pthreads)是Linux上实现多线程的标准库。 示例代码:...

在Linux环境下,C++可以通过多种方式实现多线程。以下是几种常见的方法:

1. 使用POSIX Threads (pthreads)

POSIX Threads(通常称为pthreads)是Linux上实现多线程的标准库。

示例代码:

#include <
    iostream>
    
#include <
    pthread.h>


void* thread_function(void* arg) {
    
    int thread_id = *(static_cast<
    int*>
    (arg));
    
    std::cout <
    <
     "Thread " <
    <
     thread_id <
    <
     " is running." <
    <
     std::endl;
    
    return nullptr;

}


int main() {
    
    pthread_t threads[5];

    int thread_ids[5] = {
1, 2, 3, 4, 5}
    ;
    

    for (int i = 0;
     i <
     5;
 ++i) {
    
        if (pthread_create(&
    threads[i], nullptr, thread_function, &
thread_ids[i]) != 0) {
    
            std::cerr <
    <
     "Failed to create thread "<
    <
     i <
    <
     std::endl;
    
            return 1;

        }

    }
    

    for (int i = 0;
     i <
     5;
 ++i) {
    
        pthread_join(threads[i], nullptr);

    }
    

    return 0;

}
    

编译命令:

g++ -pthread -o multithread_example multithread_example.cpp

2. 使用C++11标准库中的< thread>

C++11引入了标准库中的线程支持,使用< thread> 头文件。

示例代码:

#include <
    iostream>
    
#include <
    thread>
    
#include <
    vector>


void thread_function(int thread_id) {
    
    std::cout <
    <
     "Thread " <
    <
     thread_id <
    <
     " is running." <
    <
     std::endl;

}


int main() {
    
    std::vector<
    std::thread>
     threads;
    

    for (int i = 1;
     i <
    = 5;
 ++i) {
    
        threads.emplace_back(thread_function, i);

    }
    

    for (auto&
 t : threads) {
    
        t.join();

    }
    

    return 0;

}
    

编译命令:

g++ -std=c++11 -pthread -o multithread_example multithread_example.cpp

3. 使用C++17标准库中的< jthread>

C++17引入了< jthread> ,它是< thread> 的增强版,自动处理线程的join和detach。

示例代码:

#include <
    iostream>
    
#include <
    thread>
    
#include <
    vector>


void thread_function(int thread_id) {
    
    std::cout <
    <
     "Thread " <
    <
     thread_id <
    <
     " is running." <
    <
     std::endl;

}


int main() {
    
    std::vector<
    std::jthread>
     threads;
    

    for (int i = 1;
     i <
    = 5;
 ++i) {
    
        threads.emplace_back(thread_function, i);

    }
    

    // No need to explicitly join threads, jthread handles it automatically

    return 0;

}
    

编译命令:

g++ -std=c++17 -pthread -o multithread_example multithread_example.cpp

总结

  • POSIX Threads (pthreads):适用于需要跨平台兼容性的项目。
  • C++11 < thread> :标准库提供的线程支持,适用于现代C++项目。
  • C++17 < jthread> :自动处理线程的join和detach,简化了线程管理。

选择哪种方法取决于你的具体需求和项目环境。对于大多数现代C++项目,推荐使用C++11或C++17的线程支持。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: C++在Linux环境下如何实现多线程
本文地址: https://pptw.com/jishu/731013.html
Debian与Docker容器间通信指南 Linux C++开发中如何调试代码

游客 回复需填写必要信息