Linux---简述多线程的同步与互斥

标签: 同步与互斥 多线程
10人阅读 评论(0) 收藏 举报

假如把整条道路看成是一个【进程】的话,那么马路中间白色虚线分隔开来的各个车道就是进程中的各个【线程】了。

  • 这些线程(车道)共享了进程(道路)的公共资源(土地资源)。

  • 这些线程(车道)必须依赖于进程(道路),也就是说,线程不能脱离于进程而存在(就像离开了道路,车道也就没有意义了)。

  • 这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或转弯,必须等待其它车道的车辆通行完毕)。
  • 这些线程(车道)之间依靠代码逻辑(交通灯)来控制运行,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。
  • 这些线程(车道)之间谁先运行是未知的,只有在线程刚好被分配到CPU时间片(交通灯变化)的那一刻才能知道。
      
    注:
      由于用于互斥的信号量sem与所有的并发进程有关,所以称之为公有信号量。公有信号量的值反映了公有资源的数量。只要把临界区置于P(sem)和V(sem)之间,即可实现进程间的互斥。就象火车中的每节车厢只有一个卫生间,该车厢的所有旅客共享这个公有资源:卫生间,所以旅客间必须互斥进入卫生间,只要把卫生间放在P(sem)和V(sem)之间,就可以到达互斥的效果。
查看评论

Python-多线程

多线程多进程深度学习
  • 2017年08月21日 15:17

同步与互斥概念

进程同步是个操作系统级别的概念,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源),但对于某些资源来说,其在同一时间只能被一个进程占用,这些一次只能被一个进程所占用...
  • figo_cui
  • figo_cui
  • 2014-10-19 14:01:25
  • 445

【Java】线程并发、互斥与同步

网络上对于线程的解析总是天花龙凤的,给你灌输一大堆概念,考研、本科的操作系统必修课尤甚,让你就算仔细看完一大堆文章都不知道干什么。 下面不取网站复制粘贴,在讲解自己的Java线程并发、互斥与同步之前先...
  • yongh701
  • yongh701
  • 2015-01-17 09:22:15
  • 2692

JAVA多线程机制之同步与互斥

一个多线程的程序,两个或者多个线程可能需要访问同一个数据资源。这时就必须考虑数据安全的问题,需要线程互斥或者同步。线程的互斥当多个线程需要访问同一资源时,要求在一个时间段内只能允许一个线程来操作共享资...
  • jianggujin
  • jianggujin
  • 2016-01-04 20:12:40
  • 4096

Java中的同步与互斥机制--synchornized学习

    Java关键字synchronized是Java 语言提供的对多线程和同步的一种机制。synchronized可以作为函数的修饰符,也可作为函数内的语句。它可以作用于instance变量,对象...
  • lazy_tiger
  • lazy_tiger
  • 2007-10-11 17:53:00
  • 5326

linux多线程编程——同步与互斥

我们在前面文章中已经分析了多线程VS多进程,也分析了线程的使用,现在我们来讲解一下linux多线程编程之同步与互斥。 现在,我们不管究竟是多线程好还是多进程好,先讲解一下,为什么要使用多线程? 一、 ...
  • zqixiao_09
  • zqixiao_09
  • 2015-12-15 17:18:10
  • 2221

多线程同步与互斥(3)

在进行多线程编程时,难免还要碰到两个问题,那就线程间的互斥与同步: 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时...
  • Xp275500976
  • Xp275500976
  • 2012-02-02 10:02:07
  • 16439

多线程同步互斥实例——使用synchronized实现线程通信和互斥

线程互斥概念       线程互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 实现线程同步互斥的四种方式 ...
  • lu930124
  • lu930124
  • 2016-04-25 15:58:31
  • 4356

线程同步和互斥机制的区别

很多初学者在学习线程同步和互斥机制的时候往往不能真正理解他们之间的区别,那就不能再合适的场合使用好这两种机制,其中的区别:     1. 互斥锁主要用来保护临界资源,什么是临界资源,就是有可能多个线...
  • liubo2011
  • liubo2011
  • 2016-05-10 12:48:19
  • 1997

多线程并发编程(四):多线程同步互斥Wait/Notify

前言 前面说了使用Synchronized来进行线程之间的同步,接下来说明wait/notify的使用。 首先wait/notify必须结合synchronized来使用,即在synch...
  • saytime
  • saytime
  • 2016-04-19 17:16:17
  • 1105
    个人资料
    持之以恒
    等级:
    访问量: 380
    积分: 217
    排名: 90万+
    博客专栏
    文章存档
    最新评论