成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Unix信號量中加解鎖方法

系統(tǒng) 其他OS
文章中,我們會講解一些Unix信號量的知識,大家知道在Unix中,Unix信號量通常被認為是對資源的訪問,,Unix信號量則是防止兩個或多個進程同時訪問共享資源的一種機制。

在Unix的System V中,Unix信號量通常被認為是對資源的訪問,因此資源可用則用正整數(shù)表示,當資源被全部占用,則為零。資源共享是UNIX多用戶系統(tǒng)的一個重要特征,Unix信號量(SEMAPHORE)則是防止兩個或多個進程同時訪問共享資源的一種機制。在Unix信號量機制實現(xiàn)之前,通常采用加鎖文件的方法,其算法描述如下:

⑴加鎖算法
 

  1. int lock(lockfile)   
  2. /*返回值0代表成功,其它為失敗*/   
  3. char *lockfile; /*加鎖文件名*/   
  4. {   
  5. intfd,ret=0;   
  6. extern int errno;   
  7. if((fd=open(lockfile,O_WRONLY|O_CREAT|O_EXCL,0666))==-1   
  8. &&errno==EEXIST) ret=1;   
  9. return(ret);   
  10. }  

⑵解鎖算法
 

  1. unlock(lockfile)   
  2. char *lockfile; /*鎖文件名*/   
  3. {   
  4. unlink(lockfile);   
  5. }  

這種方法對訪問共享資源次數(shù)較少的進程是可行的,但對重載的使用則開銷太大了,況且一旦加鎖失敗則進程不知何時可以再試;當系統(tǒng)崩潰或重啟動時,加鎖文件可能會被忘掉了。

Dijkstra發(fā)表的Dekker算法給出了Unix信號量的一種實現(xiàn),為整值對象定義了兩個了原語操作:P和V。其C描述如下:
 

  1. void P(sem)   
  2. int *sem;   
  3. {   
  4. while (*sem<=0);   
  5. (*sem)--;   
  6. }   
  7. void V(sem)   
  8. int *sem;   
  9. {   
  10. (*sem)++;   
  11. }  

但上述算法不能在用戶空間編程,因為①sem指向的Unix信號量變量不能在進程間共享,它們有自己的數(shù)據(jù)段;②函數(shù)非原子執(zhí)行,內(nèi)核可在任何時候中斷一個進程;③若sem為0,進程并不釋放CPU。

所以Unix信號量必須由內(nèi)核提供,它可在進程間共享數(shù)據(jù),可執(zhí)行原子操作(即一組操作要么全部執(zhí)行,要么都不執(zhí)行),可在一個進程阻塞時將CPU給另外一個進程。 這次關(guān)于Unix信號量的知識就先做個簡單的介紹。

【編輯推薦】

  1. 講解Unix線程同步
  2. 靈活運用Unix 線程知識
  3. 教你Unix消息隊列的應用
  4. 教你如何創(chuàng)建Unix消息隊列
  5. 知識講解Unix 消息隊列
責任編輯:小霞
相關(guān)推薦

2010-04-21 16:50:31

Unix信號量

2010-04-21 16:25:13

Unix信號量

2010-04-21 16:42:48

Unix信號量

2010-04-21 17:10:25

Unix信號量

2020-11-05 09:59:24

Linux內(nèi)核信號量

2021-04-13 09:20:15

鴻蒙HarmonyOS應用開發(fā)

2021-09-07 07:53:42

Semaphore 信號量源碼

2020-09-25 07:34:40

Linux系統(tǒng)編程信號量

2024-10-29 15:23:45

Python線程安全

2019-11-19 09:00:38

JavaAND信號量

2010-03-17 16:36:10

Java信號量模型

2010-07-15 15:32:10

Perl線程

2009-12-08 12:14:43

2016-11-23 16:08:24

Python處理器分布式系統(tǒng)

2021-02-03 20:10:29

Linux信號量shell

2010-03-16 17:52:27

Java多線程信號量

2017-05-11 14:05:25

Consul分布式信號量

2025-04-16 08:50:00

信號量隔離線程池隔離并發(fā)控制

2020-11-10 15:25:26

SemaphoreLinux翻譯

2021-08-30 08:03:22

信號量Go
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品视频在线观看 | 激情婷婷成人 | 在线欧美一区 | 北条麻妃一区二区三区在线视频 | 日本精品免费在线观看 | 国产精品久久国产愉拍 | 日本在线看片 | 精品一区二区三区四区在线 | 中文一区二区 | 日韩欧美一区二区三区在线播放 | 91人人看 | 高清不卡毛片 | 国产精品成人久久久久 | 91大神在线资源观看无广告 | 国产精品高潮呻吟久久aⅴ码 | 国产精品三级 | 国产欧美日韩综合精品一 | 涩涩视频在线观看免费 | 极品在线 | 亚洲一区二区av | 免费看av大片 | 亚洲导航深夜福利涩涩屋 | 欧美日韩国产三级 | 久久亚洲国产 | 亚洲高清在线观看 | 国产精品视频播放 | 精品一区二区三区在线观看 | 黄视频国产 | 一二三四在线视频观看社区 | 在线一区二区三区 | 日韩一级免费看 | 日本免费在线 | 久久精品一级 | 99re66在线观看精品热 | 激情网站在线观看 | 99精品在线 | 免费在线一区二区 | 欧美精品一二三区 | 天天干狠狠操 | 亚洲国产成人精品女人 | 日日夜夜天天久久 |