码迷,mamicode.com
首页 > 其他好文 > 详细

学习pthreads,使用互斥量进行同步

时间:2014-08-13 19:02:47      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:全局变量   多线程通讯   互斥量   mutex   

在进行多线程编程时,我们总会遇到全局变量和数据结构的问题,这是多线程之间进行通信的问题。如果多个线程同时读写一个全局变量,那么会造成竞争或者出错。为了解决这一问题,我们需要对全局数据进行,使用互斥量实现锁的机制,当某个线程在某个操作前进行了加锁,那么某个操作只能在这个线程进行,直至将锁去除,相当于在这里将多线程的并行变成了串行。本文重点学习如何使用互斥量进行全局数据的同步,分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分给出运行结果。

一、代码示例

该程序使用4个线程实现两个向量的点积运算。

二、代码讲解

定义DOTDATA结构体,里面包含4个成员变量,可表示两个向量,乘积和向量的长度。

定义全局变量和互斥量

为了点积运算的方便,定义和使用一些局部变量

计算点积

给互斥量加锁,更新全局变量结构体中的数据,更新完成解锁,然后退出线程

给两个向量分配内存空间并赋值,然后给全局变量结构体中数据赋值,最后初始化互斥量

初始化所要执行的线程属性对象,并将其设置为可结合的,然后根据属性对象创建4个线程,执行 dotprod程序,并传递线程的ID

删除属性对象,然后结合线程,知道每个线程都结束才执行下一步程序

打印输出点积结果 ,释放两个向量的内存,删除互斥量,退出线程。

三、运行结果

bubuko.com,布布扣

学习pthreads,使用互斥量进行同步,布布扣,bubuko.com

学习pthreads,使用互斥量进行同步

标签:全局变量   多线程通讯   互斥量   mutex   

原文地址:http://blog.csdn.net/helei001/article/details/38537005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!