没有合适的资源?快使用搜索试试~ 我知道了~
linux之线程同步一
资源推荐
资源详情
资源评论
linux 线程间同步方式
线程间一般无需特别的手段进行通信,由于线程间能够共享数据结构,也就是一个全局变量能够被两个线程同
时使用
。
只是要注意的是线程间须要做好同步
!
一
、
使用多线程的理由:
1)、一个是和进程相比
,它是一种非常
"节俭"的多任务操作方式
。我们知道,在
Linux 系统下,启动一个新的进
程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任
务工作方式。而执行于一个进程中的多个线程,它们彼此之间使用同样的地址空间,共享大部分数据,启动一个线
程所花费的空间远远小于启动一个进程所花费的空间,并且,线程间彼此切换所需的时间也远远小于进程间切换所
须要的时间
。
2)、 使用多线程的理由之二是, 线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数
据的传递仅仅能通过通信的方式进行,这样的方式不仅费时,并且非常不方便。线程则不然,因为同一进程下的线
程之间共享数据空间,所以一个线程的数据能够直接为其他线程所用,这不仅快捷,并且方便。比起进程复杂的通
信机制(管道、匿名管道、消息队列、信号量、共享内存、内存映射以及 socket 等),线程间通信要简单的多.同
一进程的不同线程共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段,所以线程
之间可以方便、快速地共享信息。只需要将数据复制到共享
(全局或堆)变量中即可。多线程的进程地址空间:
当然,数据的共享也带来其他一些问题,有的变量不能同一时候被两个线程所改动
,有的子程序中声明为
static
的数据更有可能给多线程程序带来灾难性的打击
,这些正是编写多线程程序时最须要注意的地方
,需要考虑线程安
全
。
写线程安全的代码依靠线程同步.
二、线程同步
:
如果变量时只读的,多个线程同时读取该变量不会有一致性问题,但是,当一个线程可以修改的变量,其他线
程也可以读取或者修改的时候,我们就需要对这些线程进行同步
。
三、线程同步的方式
:
1)、互斥量
互斥量本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量。对互斥量进行枷
锁以后,其他视图再次对互斥量加锁的线程都会被阻塞直到当前线程释放该互斥锁。如果释放互斥量时有一个以上
剩余11页未读,继续阅读
资源评论
zhusl6688
- 粉丝: 1373
- 资源: 293
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功