首先我们来说一下同步是什么:其实所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他..
分类:
编程语言 时间:
2016-05-03 14:41:56
阅读次数:
238
条件变量(conditionvariable)线程间的同步与互斥技术,主要以互斥锁和条件变量为主,条件变量和互斥所的配合使用可以很好的处理对于条件等待的线程间的同步问题。举个例子:消费者和生产者问题。消费者与生产者最基本的关系是服务与被服务的关系,但是在线程同步与互斥中强调..
分类:
编程语言 时间:
2016-04-25 22:52:47
阅读次数:
315
死锁产生的四个条件:1、互斥使用(资源独占)一个资源每次只能给一个进程使用.2、不可强占(不可剥夺)资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放.3、请求和保持(部分分配,占有申请)一个进程在申请新的资源的同时保持对原有资源的占有(只有..
分类:
编程语言 时间:
2016-04-24 18:57:59
阅读次数:
232
在编写多线程的时候,有一种情况是比较常见的。那就是,有些公共数据修改的机会比较少。相较改写,它们读的机会反而多的多。读者写者模式:三种关系,两类人,一个场所三种关系:读者与读者:无关系写者与写者:互斥读者与写者:同步与互斥两类人:读者,写者一个场所:同一临..
分类:
其他好文 时间:
2016-04-24 18:57:20
阅读次数:
291
生产者与消费者模型生产者与消费者模型是一种描述进程间同步与互斥的一个方式,在这个模式下有两类人,一个是不停产生数据的生产者,一个是不停获取数据的消费者,为了效率最高,就必须保持两者之间的同步与互斥。为了在生产者与消费者使用mutex保持互斥的前提下,posix版本下..
分类:
编程语言 时间:
2016-04-23 01:51:11
阅读次数:
240
1.基础知识1).生产者消费模型中存在3种关系:a.生产者与生产者之间是互斥的;b.消费者与消费者之间是互斥的;c.生产者与消费者之间是同步与互斥的;2).生产者与消费者的场所,这儿我们选择单链表。2.内容:多生产者生产一个结构体串在链表的表尾上,多消费者从表头取走结构体。3..
分类:
其他好文 时间:
2016-04-23 01:49:24
阅读次数:
327
基础知识多个线程同时访问共享数据时可能会冲突,比如两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成:1.从内存读变量值到寄存器2.寄存器的值加13.将寄存器的值写回内存可能你执行到这三条指令中的某一条时,时间片到,另一个线程也执行这三条指令,就会发..
分类:
编程语言 时间:
2016-04-22 16:44:51
阅读次数:
272
Semaphore(信号量)Mutex变量是非0即1的,可看作一种资源的可用数量,初始化时Mutex是1,表示有一个可用资源,加锁时获得该资源,将Mutex减到0,表示不再有可用资源,解锁时释放该资源,将Mutex重新加到1,表示又有了一个可用资源。信号量(Semaphore)和Mutex类似,表示可用资源的数量,和..
分类:
编程语言 时间:
2016-04-22 16:41:43
阅读次数:
270
一个进程中可以有多个线程,这些线程共享进程的资源,但当多个线程访问同一个资源时,在并不能保证操作是原子的情况下,就会产生冲突而使数据最终的结果不准确,像上次我们提到的将一个数进行加1操作需要三步:将数据从内存中取出;将数据加1;再将数据放回内存中,当多个线程..
分类:
编程语言 时间:
2016-04-22 16:41:18
阅读次数:
251
临界资源:一个进程的资源对于运行在它内部的线程是共享的,一次只允许一个线程使用的资源叫做临界资源临界区:访问临界资源的那段程序叫做临界区线程的同步:同步就是协同步调,按照预定的先后顺序执行。“同”字应是指协同、协助、互相配合。线程的互斥:某一资源同时只允许..
分类:
编程语言 时间:
2016-04-22 01:25:05
阅读次数:
329