学习pthreads,使用互斥量进行同步
来源:互联网 发布:gif动态图片编辑软件 编辑:程序博客网 时间:2024/04/25 15:57
在进行多线程编程时,我们总会遇到全局变量和数据结构的问题,这是多线程之间进行通信的问题。如果多个线程同时读写一个全局变量,那么会造成竞争或者出错。为了解决这一问题,我们需要对全局数据进行,使用互斥量实现锁的机制,当某个线程在某个操作前进行了加锁,那么某个操作只能在这个线程进行,直至将锁去除,相当于在这里将多线程的并行变成了串行。本文重点学习如何使用互斥量进行全局数据的同步,分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分给出运行结果。
一、代码示例
该程序使用4个线程实现两个向量的点积运算。
二、代码讲解
定义DOTDATA结构体,里面包含4个成员变量,可表示两个向量,乘积和向量的长度。
定义全局变量和互斥量
为了点积运算的方便,定义和使用一些局部变量
计算点积
给互斥量加锁,更新全局变量结构体中的数据,更新完成解锁,然后退出线程
给两个向量分配内存空间并赋值,然后给全局变量结构体中数据赋值,最后初始化互斥量
初始化所要执行的线程属性对象,并将其设置为可结合的,然后根据属性对象创建4个线程,执行 dotprod程序,并传递线程的ID
删除属性对象,然后结合线程,知道每个线程都结束才执行下一步程序
打印输出点积结果 ,释放两个向量的内存,删除互斥量,退出线程。
三、运行结果
1 0
- 学习pthreads,使用互斥量进行同步
- 学习pthreads,使用条件变量进行多线程之间的同步
- Pthreads学习日记1
- pthreads几种锁使用
- 使用rsync进行同步
- angularjs学习之路---使用$q进行“同步”编程
- Android学习之使用seekbar进行歌曲的同步
- Pthreads
- pthreads
- pthreads
- windows 使用pthreads线程库
- 用Pthreads进行共享内存编程----HelloWorld
- 使用信号进行同步(ZZ)
- 使用rdate进行时间同步
- 使用CriticalSection进行线程同步
- 使用rdate进行时间同步
- 【多线程】使用信号量进行同步
- 使用ntp进行时钟同步
- LWIP程序OPT.h头文件的各种定义
- hdu1559,1081最大子矩阵和的两种题型
- ftp批量下载 单个下载
- LeetCode-Rotate List
- struts2 action重定向action
- 学习pthreads,使用互斥量进行同步
- C#建立VPN
- 正则表达式基础及java使用
- C语言中typedef的用法说明(最好还…
- c语言心得
- 2014年05月11日
- 动态映射objective-c的对象方法修改空指针
- 2014年05月13日
- 2014年05月13日