C++多线程编程On Linux

890.jpg

POSIX多线程模型pthread.h函数:

pthread_attr_t attr; //线程属性结构体,创建线程时加入的参数pthread_attr_init( &attr ); //初始化  pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_JOINABLE ); //是设///置你想要指定线程属性参数,这个参数表明这个线程是可以join连接的,join功//能表示主程序可以等线程结束后再去做某事,实现了主程序和线程同步功能  pthread_t tid1, tid2; //保存两个线程idint ret = pthread_create( &tid1, &attr, say_hello1, ( void* )&index1 ); //创建线程1ret = pthread_create( &tid2, &attr, say_hello2, ( void* )&index2 );  //创建线程2pthread_join( tid1, NULL ); //连接两个线程  pthread_join( tid2, NULL );

互斥锁用到的函数:

pthread_mutex_t sum_mutex; //互斥锁pthread_mutex_init( &sum_mutex, NULL ); //对锁进行初始化pthread_mutex_lock( &sum_mutex ); //占用锁//do something here..pthread_mutex_unlock( &sum_mutex ); //释放锁pthread_mutex_destroy( &sum_mutex ); //对锁进行注销

信号量用到的函数:

pthread_cond_t tasks_cond; //条件信号变量pthread_cond_init( &tasks_cond, NULL ); //对条件信号变量进行初始化pthread_cond_signal( &tasks_cond ); //条件满足, 发送信号pthread_cond_wait( &tasks_cond, &tasks_mutex ); //等待信号pthread_cond_destroy( &tasks_cond ); //对条件信号变量进行注销

以上就是C++多线程编程On Linux的内容,更多相关内容请关注PHP中文网(www.php.cn)!

立即学习“C++免费学习笔记(深入)”;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 06:11:47
下一篇 2025年12月17日 06:11:57

相关推荐

  • C++ 多线程编程总结

    在开发c++++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计c++程序时,总结起来可以从如下几点提高效率: 并发 异步 缓存 下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。 立即学习“C++免费学习笔记(深入)”; 1 任务队列 1.1 以生产者-消费者模型设计任务队列 …

    好文分享 2025年12月17日
    000
  • Linux 环境多线程编程基础设施

    本文介绍多线程环境下并行编程的基础设施。主要包括: volatile __thread Memory Barrier __sync_synchronize volatile 编译器有时候为了优化性能,会将一些变量的值缓存到寄存器中,因此如果编译器发现该变量的值没有改变的话,将从寄存器里读出该值,这样…

    好文分享 2025年12月17日
    000
  • C++学习之RAII编程思想

    背景介绍 在C++程序运行的过程中免不了要进行资源的分配——尤其是在游戏中!资源可以有很多中,从纹理、声音、着色器代码到句柄、字符串这些东西都可以被称为资源。资源的管理是项目中很重要的一轮,做得不好的话轻则内存泄漏、重则内存崩溃。RAII则是在C++项目中用于资源管理的一种重要的编程思想。 先说一点…

    好文分享 2025年12月17日
    000
  • C++ 头文件的包含顺序研究

    一.《google c++++ 编程风格指南》里的观点 公司在推行编码规范,领导提议基本上使用《Google C++ 编程风格指南》。其中《Google C++ 编程风格指南》对于头文件的包含顺序是这样的: Names and Order of Includeslink ▽Use standard …

    好文分享 2025年12月17日
    000
  • C++程序设计之四书五经

    c++++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和c语言一样,c++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不…

    好文分享 2025年12月17日
    000
  • .NET多线程编程—并发集合

    并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表、集合和数组都不是线程安全的,若无同步机制,他们不适合于接受并发的指令来添加和删除元素。 在并发代码中使用上述经典集合需要复杂…

    2025年12月17日
    000
  • 从0自学C#05–窗体之间的相互访问

    在父窗体上,改变checkbox控件的状态,实现子窗体的打开和关闭。在子窗体上,点击关闭按钮后,父窗体checkbox控件变为未选中状态。 1.方法 这里用委托事件的方法,实现窗体的相互访问。 2.父窗体(主窗体) 父窗体上放置5个CheckBox控件。并将他们赋值到CheckBox[]数组,以便代…

    好文分享 2025年12月17日
    000
  • 从0自学C#06–多窗体共用对象

    上一篇介绍了通过委托事件的方式,实现了子窗体调用父窗体的控件。本文将用参数传递的方式,实现共用一个实体对象。 本文所用的代码,也是在上一篇基础上做修改。 1.父窗体 将共用实体对象innoBERT作为子窗体构造函数的参数。代码如下“修改此行”部分。 if (subFormPPGTx[i] == nu…

    好文分享 2025年12月17日
    000
  • 从0自学C#07–螺旋队列和螺旋运动

    基于螺旋队列逻辑的螺旋运动实现 螺旋队列算法的逆向方法,控制两轴马达按螺旋轨迹运动,如下图。 1.螺旋队列算法分析 下图是螺旋队列。设1的坐标是(0,0),x方向向右为正,y方向向下为正,例如,7的坐标为(-1,-1),2的坐标为(1,0)。编程实现输入任意一点坐标(x,y),输出所对应的数字!(转…

    2025年12月17日
    000
  • 从0自学C#08–绘制曲线chart控件

    chart控件的使用 本文介绍如何使用工具箱里的chart控件,绘制多条曲线。效果图如下: 1.InitializeChart 在窗体里添加chart控件,然后在属性里清空ChartAreas、Legends和Series集合,它们会由下面代码动态实现。在窗体构造函数里,实现InitializeCh…

    2025年12月17日
    000
  • 从0自学C#09–抽象工厂模式实例

    1.适用环境 (主要是用在生产制造多种产品,软件有多种皮肤,多种数据库等环境) 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。 系统中有多于一个的产品族,而每次只使用其中某一产品族。 属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现…

    2025年12月17日
    000
  • 从0自学C#10–在线绘制类图

    在线绘制类图和UI图的网站 免费,可在线绘制,可保持到本地。 网址:https://www.processon.com 以上就是 从0自学C#10–在线绘制类图的内容,更多相关内容请关注PHP中文网(www.php.cn)!

    2025年12月17日
    000
  • 从0自学C#11–多线程创建方法汇总以及优缺点

    基本概念 1. 进程 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区…

    2025年12月17日 好文分享
    000
  • 从0自学C#12–线程同步解决方法汇总以及优缺点

    首先,肯定的一点:microsoft的framework class library(fcl)保证了所有静态方法都是线程安全的。 FCL不保证实例方法是线程安全的。因为假如全部添加锁定,会造成性能的巨大损失。另外,假如每个实例方法都需要获取和释放一个锁,事实上会造成最终在任何给定的时刻,你的应用程序…

    好文分享 2025年12月17日
    000
  • 从0自学C#13–子类和父类方法的锁对象问题

    调用父类方法时,如何与子类方法,在锁对象不是同一个实例下,能线程安全,请见下面三种情况。 case1: 如下代码,在调用父类的方法时,和子类的方法,发生线程安全问题。原因的锁对象的实例不是同一个。 using System;using System.Collections.Generic;using…

    好文分享 2025年12月17日
    000
  • C++ 中字符串的使用

    当我们一开始使用c++语言来处理字符串的时候,会感觉非常的麻烦。c语言中缺少相应的字符串处理函数,如果想要实现某个字符串功能,只能靠我们自己来实现。但是当来到c++中,字符串的处理就会变得异常简单。今天我们就来学习一下c++中最高频的字符串处理函数。示例代码上传至:https://github.co…

    好文分享 2025年12月17日
    000
  • C++ 函数内联

    1. 用内联取代宏代码 C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。 在 C 程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函 数。 预处理器用复制宏代码的方式代替函数调用, 省去了参数压栈、 生成汇编语言的 CALL 调用、返回参数、执行 return 等…

    好文分享 2025年12月17日
    000
  • C++ 智能指针详解

    c++++ 智能指针详解 一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主…

    好文分享 2025年12月17日
    000
  • C++ 的强制类型转换

    q:什么是c风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。 比如,为了…

    好文分享 2025年12月17日
    000
  • C++ 多线程

    多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。 基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。 多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为…

    好文分享 2025年12月17日
    000

发表回复

登录后才能评论
关注微信