Linux多线程编程
文章平均质量分 71
昭君出塞
每天进步一点点
展开
-
唯快不破:信号量 互斥锁 条件变量的区别(讲的很好,值得收藏)
信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号量不一定转载 2018-01-02 13:28:10 · 291 阅读 · 0 评论 -
唯快不破:linux下 fork(),vfork(),clone()的用法及区别
fork,vfork,clone都是linux的系统调用,用来创建子进程的(确切说vfork创造出来的是线程)。 先介绍下进程必须的4要点: a.要有一段程序供该进程运行,就像一场戏剧要有一个剧本一样。该程序是可以被多个进程共享的,多场戏剧用一个剧本一样。 b.有起码的私有财产,就是进程专用的系统堆栈空间。 c.有“户口”,既操作系统所说的进程控制块,在li转载 2018-01-02 17:16:30 · 265 阅读 · 0 评论 -
唯快不破:【多线程】使用信号量进行同步
信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信号量的变量及对它进行的两个原语操作。信号量为一个整数,我们设这个信号量为:sem。很显然,我们规定在sem大于等于零的时候代表可供并发进程使用的资源实体数,sem小于零的时候,表示正在等待使用临界区的进程的个数。根据这个原则,在给信号量附初值的时候,我们显然就要设初值大于零。 p操作和v操作是不可中断的程序转载 2018-01-02 19:23:30 · 560 阅读 · 0 评论 -
唯快不破:线程间同步--互斥锁、条件变量、信号量
一、互斥锁(mutex) 在上一篇文章中讲到的互斥锁,说的是在多线程之间为了保持同步而使用的。但是什么是线程同步呢,为了保持线程同步都可以采用什么策略? 多个线程同时访问共享数据时可能会冲突,这跟前面讲信号时所说的可重入性是同样的问题。比如两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成: 从内存读变量值到寄存器 寄存器的值加1转载 2018-01-03 10:06:50 · 468 阅读 · 0 评论 -
唯快不破:线程同步、条件变量、互斥锁的使用
线程间的同步技术,主要以互斥锁和条件变量为主,条件变量和互斥所的配合使用可以很好的处理对于条件等待的线程间的同步问题。举个例子:当有两个变量x,y需要在多线程间同步并且学要根据他们之间的大小比较来启动不同的线程执行顺序,这便用到了条件变量这一技术。看代码 [cpp] view plain copy "font-family:'KaiTi_GB23转载 2018-01-03 11:58:11 · 287 阅读 · 0 评论 -
唯快不破:linux进程间通信(IPC)--共享内存
从表面上看,UNIX® 应用程序单独控制底层主机。它随时可以访问处理器,它的内存是神圣不可侵犯的,连接它的设备只为它服务。但是表面现象会骗人,这样有如君主一般的绝对地位只是幻想而已。UNIX 系统同时运行大量应用程序,有限的物理资源要在它们之间共享。处理器能力被划分为时间片,应用程序映像经常被换入和换出真实内存,设备访问由需求驱动,还受到访问权限的限制。尽管您的 shell 提示符不断闪烁,但是转载 2018-01-03 15:23:55 · 396 阅读 · 0 评论 -
唯快不破:线程同步--递归锁 非递归锁
一、简介 1.1 进程/线程同步方法 常见的进程/线程同步方法有互斥锁(或称互斥量Mutex)、读写锁(rdlock)、条件变量(cond)、信号量(Semophore)等。 在windows系统中,临界区(Critical Section)和事件对象(Event)也是常用的同步方法。 1.2 递归锁/非递归锁 Mutex可以分为递转载 2018-01-03 16:38:43 · 473 阅读 · 0 评论 -
唯快不破:多线程与多进程的区别(4)
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。 今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发? 这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。 我想,只要你不是整天都写那种转载 2017-12-29 14:25:24 · 324 阅读 · 0 评论