semaphore用法

#-*- encoding:utf-8 -*-
import multiprocessing
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')def worker(s, i):s.acquire()print(multiprocessing.current_process().name+":" + "acquire");time.sleep(i)print(multiprocessing.current_process().name +":"+ "releasen");s.release()print"--------------"if __name__ == "__main__":s = multiprocessing.Semaphore(3)#acquire代表3个可用资源-1。release表示现有可用资源+1for i in range(5):print"i=",ip = multiprocessing.Process(target = worker, args=(s, i*2))p.start()# 当一个线程想要访问某个共享资源,首先,它必须获得semaphore。
# 如果semaphore的内部计数器的值大于0,那么semaphore减少计数器的值并允许访问共享的资源。
# 计数器的值大于0表示,有可以自由使用的资源,所以线程可以访问并使用它们。
# 另一种情况,如果semaphore的计数器的值等于0,
# 那么semaphore让线程进入休眠状态一直到计数器大于0。
# 计数器的值等于0表示全部的共享资源都正被线程们使用,所以此线程想要访问就必须等到某个资源成为自由的。
# 当线程使用完共享资源时,他必须放出semaphore为了让其他线程可以访问共享资源。
# 这个操作会增加semaphore的内部计数器的值

Semaphore用法相关推荐

  1. Java多线程之Semaphore用法

    Java多线程之Semaphore用法 本文目录: Semaphore基本概念 Semaphore使用案例:3个停车位,6辆车去抢,走一辆,抢一个停车位. 1. Semaphore基本概念 在信号量上 ...

  2. semaphore java用法_Java Semaphore用法

    操作系统的信号量是个很重要的概念,在进程控制方面都有应用.Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,acquire()获取 ...

  3. python3网络编程中semaphore用法_python3 进程信号量semaphore

    #-*- coding: utf-8 -*- importosimporttimefrom multiprocessing importPooldefgo_ktv(i):print("use ...

  4. 使用Java辅助类(CountDownLatch、CyclicBarrier、Semaphore)并发编程

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法 一.C ...

  5. Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore

    2019独角兽企业重金招聘Python工程师标准>>> 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarr ...

  6. Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

    2019独角兽企业重金招聘Python工程师标准>>> Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在java 1.5中,提供了一 ...

  7. cocurrent包semaphore信号量

    semaphore 英[ˈseməfɔ:(r)] 美[ˈsɛməˌfɔr, -ˌfor] n. 臂板信号系统,(铁道)臂板信号装置; Semaphore 用法 信号量主要有两种用途: 保护一个重要(代 ...

  8. CountDownLatch,CyclicBarrier和Semaphore

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法. 以下 ...

  9. Thread.join(), CountDownLatch、CyclicBarrier和 Semaphore区别,联系及应用

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法, 由于 ...

最新文章

  1. mysql 数据库 数组类型转换_mysql数字类型的数据如何进行转换?
  2. 2019年IT人加薪的9大神器
  3. 如何安装fedora13的显卡驱动
  4. 王超:奇虎360MongoDB
  5. HANA数据库为何如此之快
  6. 【一雪前耻!】两种方法判断大小端模式
  7. 课程设计+计算机程序设计,高职计算机程序设计课翻转课堂初探
  8. php mysql八大动态w...,PHP+MySQL八大动态Web应用实战
  9. WCF三种通信模式(转)
  10. Win32ASM学习[11]:逻辑运算
  11. 单/双中括号与测试条件
  12. python中的替换函数_python:替换模块类中的函数
  13. 销量之王,去年程序员最爱看的技术书就是它
  14. java爬虫抓取起点小说,手把手带你爬虫 | 爬取起点小说网
  15. 干货 | DDD实战:基于洋葱模型的分层代码架构设计
  16. 313day(服务器的一些问题)
  17. 面试题:25匹马最快3匹及扩展
  18. java程序设计 试题_在清算期间支付额不确定的年金是: A.返还年金 B.变额年金 C.即期年金 D.既定年金...
  19. 12.23网络嗅探实验记录
  20. 教你如何正确反编译apk

热门文章

  1. HDU 2571 命运
  2. 衡量发动机性能的重要指标—升功率
  3. C# 3.0新特性初步研究 Part5:匿名类型
  4. C#设计模式(5)-Factory Method Pattern
  5. JS快速实现深拷贝--一行就搞定了
  6. Vue 响应式原理(双向数据绑定) 怎样实现 响应式原理?
  7. 非平坦结构元matlab,基于MATLAB的巴特沃思型数字滤波器设计.doc
  8. 微信小程序云开发如何--实现简单的增删改查
  9. 单像素骨架提取算法c语言实现,【图像】骨架提取与分水岭算法
  10. 自己动手写js分享插件 [支持https] (QQ空间,微信,新浪微博。。。)