2021SC@SDUSC
目录
一.前置知识
关于锁:
操作系统中的各种锁:
1.互斥锁:
加锁时,判断锁是否空闲,如果空闲,修改为上锁状态,返回成功;如果已经上锁,则返回失败。解锁时,则把锁状态修改为空闲状态。
具体步骤为:
创建互斥锁;初始化这把锁;寻找共享资源;操作共享资源的代码之前加锁;之后进行解锁。
2.读写锁
关于读:
只要没有线程持有某个给定的读写锁用于读以及用于写,那么无论线程有多少可以都持有该读写锁用于读。
关于写:
只有当没有线程有某个给定的读写锁用于读以及用于写时,才能分配该读写锁用于写。
这两种锁都是基于互斥锁把其它的线程隔离开的情况下。
3.乐观锁
总是认为是最好的情况而不设锁。
4.悲观锁
总是认为是最差的情况而一直设锁。
二.关键代码分析
resp->get_message_body_nocopy(&body, &body_size);
if (body_size != 0)
//当长度不为0的时候,在屏幕上打印如下语句,设置*buf为NULL(空字符)。
printf(&