多进程多线程基本介绍参考
多线程执行
线程之间以并发(注意不是并行,并行是互相毫不相干的各自同时执行)方式执行。但是由于多线程往往拥有共同的临界资源,比如打印机,全局变量,控制台等。这种资源一次只允许一个线程访问和使用(互斥)。使得多线程必须要按照一定的次序串行执行(同步)共享资源。
在各个线程中使用、操作共享资源的代码段叫临界区。
信号量
信号量是一种数据结构
一般由两个成员组成:数值、指针
一般来说,信号量的值代表着当前资源的使用情况
信号量的值只能由P、V操作来改变
不同的信号量可以实现不同场景下的线程同步,但是都是由P、V操作来实现。
P、V操作
P、V操作都是原子操作
P申请一个单位资源,申请不到就等待
V释放一个单位资源,如果有等待线程就唤醒
P操作
P(S)
--S
如果S<0,等待
如果S>=0,继续
V操作
V(S)
++S
如果S>0,继续
 
如果S<=0,唤醒
根据P、V操作中使用的变量个数和大小,可以实现多种线程同步的场景:互斥体、信号量、读写锁等。这些同步工具都有类似的接口,如获取(acquire)、释放(release)等。
用P、V操作实现互斥
互斥信号量mutex=1实现互斥使用打印机
 
 
用P、V操作实现简单同步
多信号量实现生产者和消费者(单缓冲区同步)
 
 
 
 
多线程同步机制详解
        
                  
                  
                  
                  
                            
本文介绍了多线程环境下资源的并发与串行执行概念,深入解析了信号量及P、V操作的工作原理,通过实例展示了如何利用这些机制实现线程间的互斥与简单同步。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
                    
              
            
                  
					957
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
					
					
					


            