c++多线程编程实例

C++多线程编程实现的方式有以下几种:

1、使用C++标准库中的<thread>头文件

c++多线程编程实例

C++11引入了<thread>头文件,提供了对多线程编程的支持,使用std::thread类可以创建和管理线程,以下是一个简单的示例:

include <iostream>
include <thread>
void print_hello() {
    std::cout << "Hello from thread!" << std::endl;
}
int main() {
    std::thread t(print_hello); // 创建一个新线程,执行print_hello函数
    t.join(); // 等待线程执行完成
    return 0;
}

2、使用POSIX线程(pthread)库

POSIX线程库是一套跨平台的多线程API,可以在多种操作系统上使用,在C++中使用POSIX线程需要包含<pthread.h>头文件,并链接pthread库,以下是一个简单的示例:

c++多线程编程实例

include <iostream>
include <pthread.h>
void* print_hello(void* arg) {
    std::cout << "Hello from thread!" << std::endl;
    return nullptr;
}
int main() {
    pthread_t t; // 定义一个线程ID
    int result = pthread_create(&t, nullptr, print_hello, nullptr); // 创建一个新线程,执行print_hello函数
    if (result != 0) {
        std::cerr << "Error: Unable to create thread" << std::endl;
        return 1;
    }
    pthread_join(t, nullptr); // 等待线程执行完成
    return 0;
}

3、使用Boost线程库

Boost线程库是一个功能强大的C++多线程库,提供了丰富的同步原语和高级特性,要使用Boost线程库,需要包含<boost/thread.hpp>头文件,并链接Boost线程库,以下是一个简单的示例:

include <iostream>
include <boost/thread.hpp>
void print_hello() {
    std::cout << "Hello from thread!" << std::endl;
}
int main() {
    boost::thread t(print_hello); // 创建一个新线程,执行print_hello函数
    t.join(); // 等待线程执行完成
    return 0;
}

4、使用OpenMP并行编程框架

c++多线程编程实例

OpenMP(开放多处理)是一个用于C++和Fortran的并行编程框架,可以在多个处理器核心上并行执行代码,要使用OpenMP,需要在编译时启用并行支持,并在代码中包含<omp.h>头文件,以下是一个简单的示例:

include <iostream>
include <omp.h>
define N 1000000000
int main() {
    int a[N], b[N];
    for (int i = 0; i < N; i++) {
        a[i] = i;
        b[i] = i * i;
    }
    int sum = 0;
    pragma omp parallel for reduction(+:sum) // 并行计算数组a和b的元素之和,并将结果累加到sum变量中
    for (int i = 0; i < N; i++) {
        sum += a[i] + b[i];
    }
    std::cout << "Sum: " << sum << std::endl; // 输出结果:Sum: 333333333333333329999999666666666666666633333333333333332999999966666666666666672999999988888888888888872999999888888888888888729999997777777777777775299999977777777777777752999999666666666666665299999955555555555555429999955555555555555429999444444444444422222222222222111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/247024.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年1月22日 22:46
下一篇 2024年1月22日 22:48

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入