【C/C++】C++11 线程库重大历史意义

这篇具有很好参考价值的文章主要介绍了【C/C++】C++11 线程库重大历史意义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++11 线程库重大意义【C++11 中最重要的特性:就是对线程进行支持】

C++11 线程库解决了历史多线程跨平台问题,增强可移植性。

C++11 线程库特点:支持跨平台、支持面向对象封装的类。

C++11 线程库实现原理: 封装库时使用了条件编译,即底层分别调用不同平台(Linux/Win/Mac)的线程API。

API 比较

C++11 线程库API

【C/C++】C++11 线程库重大历史意义

Linux/Win 系统线程库 API

【C/C++】C++11 线程库重大历史意义

代码示例 Demo

对比
下面是一个使用C++11线程库和 Linux 系统线程库的例子进行比对:

使用C++11线程库的例子:

#include <iostream>
#include <thread>

void printHello() {
    std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl;
}

int main() {
    std::thread t1(printHello);
    std::thread t2(printHello);

    t1.join();
    t2.join();

    return 0;
}

使用之前的线程库的例子:

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

void* printHello(void* arg) {
    std::cout << "Hello from thread " << pthread_self() << std::endl;
    return NULL;
}

int main() {
    pthread_t t1, t2;
    pthread_create(&t1, NULL, printHello, NULL);
    pthread_create(&t2, NULL, printHello, NULL);

    pthread_join(t1, NULL);
    pthread_join(t2, NULL);

    return 0;
}

可以看到,使用C++11线程库的代码更加简洁和直观,而且不需要使用复杂的线程管理函数和数据结构。此外,C++11线程库还提供了一些新的语言特性,如lambda表达式和std::thread类等,使得程序员可以更方便地创建和管理线程。文章来源地址https://www.toymoban.com/news/detail-422067.html

到了这里,关于【C/C++】C++11 线程库重大历史意义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HTML5高级第二篇】WebWorker多线程、EventSource事件推送、History历史操作

    1.1 概述 前端JS默认按照单线程去执行,一段时间内只能执行一件事情。举个栗子:比方说古代攻城游戏,带来十万大军,先让1000人去当炮灰(攻城),其他人就在后面看着等着,然后炮灰燃尽(这1000人攻城失败),然后第二批敢死队继续攻城,其他人还是等着…依次类推,

    2024年02月09日
    浏览(35)
  • C++11线程池和Linux C++线程对比使用

    2024年02月09日
    浏览(36)
  • 【C++11】线程库

    linux下的 pthread 是一个整形,而 id 是一个自定义类型, get_id 即打印线程id 期望使用get_id 展开对应线程的id,但是get_id需要线程对象去调用,而此时正在构造线程对象 this_thread thread中 单独提供一个类 this_thread , 该类中存在 get_id() 属于全局的,由于可能存在冲突问题,所以使

    2024年02月09日
    浏览(23)
  • C++11实现线程池

    1.所有权的传递 适用移动语义可以将一个unique_lock赋值给另一个unique_lock,适用move实现。  std::lock_guardstd::mutex(testMutex1,std::adopt_lock);  加上了std::adopt_lock就是lock_guard不会再次加锁了。 2.可多次lock的锁  std::recursive_mutex 工程中难免有多个地方要加锁,如果存在交叉调用则会出现

    2024年02月03日
    浏览(25)
  • C++11多线程—thread

      目录 1.thread类 2.线程函数参数 3.原子性操作库(atomic) 4.lock_guard与unique_lock 4.1mutex的种类 4.2lock_guard 4.3unique_lock 5.condition_variable         在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接 口,这使得代码的可移植性比较差。C++11中最重要

    2023年04月16日
    浏览(34)
  • 11.定时任务&定时线程池详解

    3.1 新增定时任务池 11.定时任务定时线程池详解 ​ 当我们不用任务框架时,我们想自己写一个定时任务时,我们能想起那个工具类呢?Timer ?还有吗?不知道了,下面我们要讲下ScheduledThreadPoolExecutor,定时任务线程池,可以执行一次任务,还可以执行周期性任务。 1.0 Schedu

    2023年04月08日
    浏览(37)
  • 使用C++11实现线程池

    该线程池类使用了C++11的多线程库,包括std::thread、std::mutex、std::condition_variable和std::future。该类使用一个vector存储工作线程,一个队列存储任务。 在构造函数中,创建了指定数量的工作线程,并将每个线程的执行函数设置为一个无限循环,等待任务的到来。在任务队列中有任

    2023年04月14日
    浏览(27)
  • 11.Netty源码之线程模型

    NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都

    2024年02月16日
    浏览(39)
  • 【C++11】多线程+IO流

      需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、C++11线程库 1、每个线程都有独立的栈空间 2、加锁的位置 3、CSA操作 4、C++的类模板atomic(原子操作) 5、lock_g

    2024年02月01日
    浏览(35)
  • 【C++】—— C++11之线程库

    前言: 在本期,我将给大家介绍的是 C++11 中新引进的知识,即关于 线程库 的相关知识。 目录 (一)线程库的介绍 1、线程库的由来 2、线程库的简单介绍 (二)线程函数参数 (三)原子性操作库 (四)lock_guard与unique_lock 1、mutex的种类 2、lock_guard 3、unique_lock (五)condi

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包