精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

一口Linux
認證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
Linux中常見同步和互斥機制設計原理
Linux信號量(1)-SYSTEM V
Linux信號量(2)-POSIX 信號量
Linux信號量(3)-內(nèi)核信號量
兩個線程,兩個互斥鎖,怎么形成一個死循環(huán)?
Linux庫概念,動態(tài)庫和靜態(tài)庫的制作,如何移植第三方庫
作者動態(tài) 更多
iptables -m connlimit導致內(nèi)存不足
2星期前
為什么對技術(shù)人員的考核大多都只看加班時間?
3星期前
某通信公司筆試題,你會做幾道?
07-01 21:58
10種初學者最常見的c語言段錯誤實例及原因分析
05-30 12:13
linux系統(tǒng)監(jiān)控工具小神器:btop
05-17 17:37

兩個線程,兩個互斥鎖,怎么形成一個死循環(huán)?

粉絲的提問,必須安排。

兩個線程,兩個互斥鎖如何形成死鎖?

程序流程圖如下:

程序流程圖

如上圖所示:

  1. t0時刻,主線程創(chuàng)建子線程,并初始化互斥鎖mutex1、mutex2;
  2. t1時刻,主線程申請到了mutex1、子線程申請到了mutex2;
  3. t2時刻,主線程和子線程都sleep 1秒鐘,防止優(yōu)先獲得時間片的線程直接申請到了另外1個互斥鎖,導致程序直接退出;
  4. t3時刻,主線程和子線程都想獲得對方手里的互斥鎖,但是對方都來不及釋放自己手里的鎖;
  5. t4時刻,主線程和子線雙雙進入休眠。

【注意】為了保證主線程和子線程都能夠分別獲得鎖mutex1、mutex2,各自獲得鎖后一定要先sleep 1秒鐘,否則創(chuàng)建完子線程后,主線程還有一定的時間片,主線程會申請到鎖mutex2,無法形成死鎖。

死鎖

源碼如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>   

unsigned int value1, value2, count;
pthread_mutex_t  mutex1,mutex2;
void *function(void *arg);


void  *function(void *arg)
{
 pthread_mutex_lock(&mutex2);
 printf("new thread get mutex2\n"); 
 sleep(1);
 pthread_mutex_lock(&mutex1); 
 printf("new thread get mutex1\n"); 
 
 
 pthread_mutex_unlock(&mutex1);
 printf("new thread release mutex1\n");
 pthread_mutex_unlock(&mutex2); 
 printf("new thread release mutex2\n");
    return  NULL;
 }  

int main(int argc,  char *argv[])
{
 pthread_t  a_thread;
         
 if (pthread_mutex_init(&mutex1, NULL) < 0)
 {
  perror("fail to mutex_init");
  exit(-1);
 }
  if (pthread_mutex_init(&mutex2, NULL) < 0)
 {
  perror("fail to mutex_init");
  exit(-1);
 }              
 if (pthread_create(&a_thread, NULL, function, NULL) < 0)
 {   
  perror("fail to pthread_create");     
  exit(-1);
 }
    while ( 1 )
    {
        pthread_mutex_lock(&mutex1);
  printf("main thread get mutex1\n");
  sleep(1);
        pthread_mutex_lock(&mutex2);  
  printf("main thread get mutex2\n");
        pthread_mutex_unlock(&mutex2);
  printf("main thread release mutex2\n");
        pthread_mutex_unlock(&mutex1);
  printf("main thread release mutex1\n");
    }
    return 0;
 } 

編譯運行

從執(zhí)行結(jié)果可以判斷,主線程和子線程分別獲得了互斥鎖mutex1、mutex2,sleep 1秒后,他們都想再分別申請mutex2、mutex1,而雙方都不想釋放自己手中的鎖,鎖已形成了死鎖,程序就一直處于休眠狀態(tài)。

查看下該進程的線程

查看進程ID,為4204

查看該進程創(chuàng)建的線程id:4204、4205。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 1
關(guān)注 181
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 特级毛片在线大全免费播放 | 波多野结衣高潮喷水在线观看 | 五月天婷婷在线播放 | 超碰av在线播放 | 精品国产精品久久 | 久久艹艹 | 亚洲AV久久久噜噜噜熟女软件 | 日韩人妻中文无码一区二区七区 | 一区二区不卡视频 | 国产一区二区精品在线 | 久久精品国产99久久72部 | 中文字幕欧美风情 | 麻豆视频网| 午夜a级理论片915影院 | 精品亚洲永久免费精品 | 乳大有奶水风流少妇 | 一级电影在线 | 一个妈妈的女儿6在线 | 97伦片| 爱av免费 | 亚洲一二三区电影久久久 | 欧美猛烈无遮挡免费视频网站 | 日一日操一操 | 97自拍偷拍 | 久久国产精品嫩草影院的推荐理由 | 精品午夜一区 | 黄色一级片网站 | 国产免费午夜福利片在线 | free性videos另类重口 | 免费高清成人 | 亚洲色噜噜噜噜噜噜国产 | 国产精品久久久久久久天堂 | 成人午夜激情网 | 高潮射精日本韩国在线播放 | 国产午夜成人无码免费看 | 久久国产精品99久久久久久牛牛 | 文豪野犬第四季完整免费观看 | 色多多视频网站 | 白浆av导航 | 国产区av| 国产精品久久久尹人香蕉 |