网站开发文件,校园网站建设目的,大连网站制作的公司哪家好,如何使用ps做网站常见的线程同步
linux#xff1a; 互斥锁#xff1a;实现共享资源的串行访问#xff0c;有三个版本普通锁(默认属性)#xff0c;检错锁(可以防止相同线程重复加锁)和递归锁(相同线程可以重复加锁)条件变量#xff1a;配合互斥锁使用#xff0c;实现线程之间的通信#…常见的线程同步
linux 互斥锁实现共享资源的串行访问有三个版本普通锁(默认属性)检错锁(可以防止相同线程重复加锁)和递归锁(相同线程可以重复加锁)条件变量配合互斥锁使用实现线程之间的通信可以唤醒一个线程也可以唤醒全部线程需要防止虚假唤醒信号量可以实现线程的通信也可以搭配mutex实现完成对共享资源的保护可以通过资源数控制唤醒的线程数量读写锁比互斥锁效率更高能够实现读操作的并行默认属性读优先级更高 C11 互斥锁需要搭配lock_guard和unique_lock使用防止因为代码逻辑忽略解锁问题除了普通的mutex还有超时版本time_mutex, 递归版本recursive_mutex等条件变量需要搭配加锁了的unique_lock使用
常见进程通信(linux)
信号量 设置sem_init(sem_t* sem, int pshared, unsigned int value);第二个参数为非0即可。 管道半双工单向传输 在内核中开辟一块缓冲区多个进程拿到同一个管道的句柄就可以访问同一个缓冲区实现通信实现单向传输一个进程传一个进程拿。有匿名管道和命名管道。匿名管道 内核缓存区没有标识只能用于父子进程通信子进程会复制父进程的所有信息包括管道句柄通过pipe()来实现 命名管道 内核缓冲区有标识符可以用于不同进程之间的通信通过mkfifo name.fifo 创建一个命名管道 消息队列 内核里面的一个优先级队列多个进程访问同一个队列进行添加节点或者获取节点通信 共享内存 在物理内存中开辟了一块内存空间多个进程将虚拟地址映射到相同的物理内存上就可以直接通过虚拟地址访问相同的物理内存实现通信。相比管道和消息队列减少信息的拷贝。 Socket套节字将socket()函数的第一个参数改为AF_UNIX即可