当前位置: 首页 > news >正文

网站开发招标书vue做企业网站

网站开发招标书,vue做企业网站,八宝山网站建设,免费crm管理系统(1)多线程资源竞争问题: 互斥:在多线程中对临界资源的排他性访问。 解决方案:互斥锁 mutex互斥锁在进程pcb块,ret 为0说明别人在用,1说明空闲。 阻塞锁 man pthread_mutex_init man pthread_…

(1)多线程资源竞争问题:

互斥:在多线程中对临界资源的排他性访问。

解决方案:互斥锁
mutex互斥锁在进程pcb块,ret 为0说明别人在用,1说明空闲。

阻塞锁
man pthread_mutex_init
man pthread_mutex_destory
定义:pthread_mutex_t  mutex;内核对象
初始化:man pthread_mutex_init
加锁  pthread_mutex_lock
解锁 pthread_mutex_unlock
销毁pthread_mutex_destroy

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

 

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

int WIN = 3;

pthread_mutex_t mutex;

void* th(void* arg)

{

while (1)

{

pthread_mutex_lock(&mutex);

if (WIN > 0)

{

WIN--;

printf("get win\n");

pthread_mutex_unlock(&mutex);

int n = rand() % 5 + 1;

sleep(n);

pthread_mutex_lock(&mutex);

WIN++;

printf("relese win\n");

pthread_mutex_unlock(&mutex);

break;

}

else

{

pthread_mutex_unlock(&mutex);

}

}

return NULL;

}

int main(int argc, char** argv)

{

pthread_t tid[10] = {0};

int i = 0;

pthread_mutex_init(&mutex,NULL);

for (i = 0; i < 10; i++)

{

pthread_create(&tid[i], NULL, th, NULL);

}

for (i = 0; i < 10; i++)

{

pthread_join(tid[i], NULL);

}

pthread_mutex_destroy(&mutex);

system("pause");

return 0;

}

为了并发要保证锁定内容尽量少,可以快速完成,只锁全局变量。没有解锁就会陷入死锁。

加锁后的代码到解锁部分属于原子操作
 

(2)同步:有一定顺序的对资源的排他性访问(二值)

互斥锁可以控制排他访问,但没有顺序。

信号量:1/0   semaphore.h  posix


定义:sem_t sem
初始化:int sem_init(,0线程用1进程用,1);,0,0
p申请sem_wait;            p申请信号量会阻塞-1
v释放sem_post          v释放信号量不阻塞+1    二值信号量
销毁sem_destroy

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

 

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <semaphore.h>

sem_t sem_H,sem_W;

void* th1(void* arg)

{

int i =10;

while(i--)

{

sem_wait(&sem_H); // P 操作 也即是 申请信号量 会阻塞 -1

printf("hello ");

fflush(stdout);

sem_post(&sem_W); // V 操作 释放信号量 +1

}

return NULL;

}

void* th2(void* arg)

{

int i =10;

while(i--)

{

sem_wait(&sem_W);

printf("world\n");

sem_post(&sem_H);

sleep(1);

}

return NULL;

}

int main(int argc, char **argv)

{

pthread_t tid1,tid2;

sem_init(&sem_H,0,1);

sem_init(&sem_W,0,0);

pthread_create(&tid1,NULL,th1,NULL);

pthread_create(&tid2,NULL,th2,NULL);

pthread_join(tid1,NULL);

pthread_join(tid2,NULL);

sem_destroy(&sem_H);

sem_destroy(&sem_W);

system("pause");

return 0;

}

计数信号量是互斥
 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

 

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <semaphore.h>

sem_t sem_WIN;

void* th(void* arg)

{

sem_wait(&sem_WIN);

printf("get win\n");

int n = rand() % 5 + 1;

sleep(n);

printf("relese win\n");

sem_post(&sem_WIN);

return NULL;

}

int main(int argc, char** argv)

{

pthread_t tid[10] = {0};

int i = 0;

sem_init(&sem_WIN,0,3);

for (i = 0; i < 10; i++)

{

pthread_create(&tid[i], NULL, th, NULL);

}

for (i = 0; i < 10; i++)

{

pthread_join(tid[i], NULL);

}

sem_destroy(&sem_WIN);

system("pause");

return 0;

}

(3)死锁产生条件:
互斥条件:一个资源每次只能被一个进程使用
请求与保持条件:一个进程因请求资源而阻塞时,对以获得的资源保持不放。
不剥夺条件:进程以获得的资源,未使用完不能强行剥夺。
循环等待条件:若干进线程之间形成头尾相接的循环等待资源关系。
 

http://www.dtcms.com/a/488794.html

相关文章:

  • 玄圭互联网站建设推广班级网站源码
  • 建立自己网站备案域名购买阿里云
  • 深圳市公司网站建设公司余姚网站建设企业
  • 《30天网站建设实录》广州做网站的哪家好
  • 网站制作器手机版下载官网搭建平台
  • 做网站比较好的数字网站ps照片怎么做
  • 网站设计制作需要多少钱旅游电子商务网站建设情况
  • discuz做商城网站wordpress 用户介绍
  • 企业网站的设计风格动态素材网站
  • 福州网站建设企业哪家好?网页制作模板 html
  • 做网站要费用多少广东品牌网站建设公司
  • 广东住房和城乡建设局网站首页wordpress扩展插件
  • 上海免费网站建设模板网站如何添加百度统计
  • 传奇网站模板怎么做的吗合肥房地产最新消息
  • 高端网站开发wordpress适配熊掌号
  • 用asp做网站遇到的问题如何把网站主关键词做到百度首页
  • 有域名就可以做网站吗苏州网络公司哪家最好
  • 小软件下载网站繁体网站怎么做
  • 专业企业网站开发联系电话网站seo计划
  • 网站开发新手什么软件好沈阳做网站有名公司有哪些
  • 国外免费logo网站网页升级防问广大
  • 毕设做网站答辩稿网站弹广告是什么样做的
  • 网站更换空间改版收录电子商务公司企业简介
  • 注册公司制作网站灌南县规划局网站理想家园规划建设
  • 太原网站优化多少钱深圳设计公司画册设计
  • 建设五证在那个网站可以查宁波网站建设rswl
  • asp做学生信息网站公司 宜宾网站建设
  • 网站建设 工作建议上海网站排名seo公司
  • 软件开发公司需要什么硬件设备大型seo公司
  • 域名查询ip福州seo关键词排名