互斥锁用于上锁,条件变量则用于等待。条件变量是类型为pthread_cond_t的变量。一般使用如下函数:
#include
int pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);每个条件变量总是有一个互斥锁与之关联。调用...
分类:
系统相关 时间:
2014-06-08 17:45:15
阅读次数:
337
概述
互斥锁把试图进入我们称之为临界区的所有其他线程都阻塞住。该临界区通常涉及对由这些线程共享一个或多个数据的访问或更新。读写锁在获取读写锁用于读某个数据和获取读写锁用于写直接作区别。读写锁的分配规则如下:
1、只要没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读。
2、仅当没有线程持有某个给定的读写锁用于读或用于写时,才能分配该读写锁用于写。
即只要没有线程在...
分类:
系统相关 时间:
2014-06-08 09:54:51
阅读次数:
344
POSIX信号量相关函数:
sem_open
sem_close
sem_unlink
sem_init
sem_destroy
sem_wait
sem_post
POSIX互斥锁
pthread_mutex_init
pthreaad_mutex_lock
pthread_mutex_unlock
pthread_mutex_...
分类:
其他好文 时间:
2014-06-05 12:39:14
阅读次数:
412
//从别处拷贝过来的,只作为自己查看方便,原作者不详,请谅解。一:关于joinjoinjoin是三种同步线程的方式之一。另外两种分别是互斥锁(mutex)和条件变量(condition
variable)。调用pthread_join()将阻塞自己,一直到要等待加入的线程运行结束。可以用pthrea...
分类:
其他好文 时间:
2014-05-28 02:13:20
阅读次数:
351
资源:动态分配的内存、文件描述器、互斥锁、图形界面中的字型与笔刷、数据库连接以及网络sockets等,无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。条款13:以对象管理资源当我们向系统申请资源后,一定要记得释放,不然就容易发生内存泄漏。但是意识到这样一件事并不是很容易,比如我们是通过...
分类:
编程语言 时间:
2014-05-26 23:23:05
阅读次数:
328
资源:动态分配的内存、文件描述器、互斥锁、图形界面中的字型与笔刷、数据库连接以及网络sockets等,无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。
条款13:以对象管理资源
当我们向系统申请资源后,一定要记得释放,不然就容易发生内存泄漏。但是意识到这样一件事并不是很容易,比如我们是通过一个函数来动态分配内存并返回一个指针。
Investment* ceateInve...
分类:
编程语言 时间:
2014-05-22 17:28:27
阅读次数:
340
Linux系统通过软限制和硬限制,制约了打开文件的最大个数,而且每个端口侦听的连接数受限于/etc/sytctl.conf中的ip_local_port_range的范围,那么nginx是如何做到轻量级和高并发的。
Nginx的进程模型
各个work进程间通过accept_mutex互斥锁进行连接的获取,以防止惊群现象的发生(即所有进程都收到通知,却...
分类:
其他好文 时间:
2014-05-22 17:11:39
阅读次数:
364
浅解多线程(一)之线程入门起步本文链接确定多线程的结束时间,thread的IsAlive属性线程优先级,thread的ThreadPriority属性线程通信之Monitor类线程排队之Join多线程互斥锁Mutex信号量semaphore确定多线程的结束时间,thread的IsAlive属性在多个...
分类:
编程语言 时间:
2014-05-19 07:01:07
阅读次数:
776
ReentrantLock是一个可重入的互斥锁,实现了接口Lock,和synchronized相比,它们提供了相同的功能,但ReentrantLock使用更灵活,功能更强大,也更复杂。这篇文章将为你介绍ReentrantLock,以及它的实现机制。
ReentrantLock介绍
通常,ReentrantLock按下面的方式使用:
public class ReentrantLockTest...
分类:
其他好文 时间:
2014-05-14 20:02:26
阅读次数:
397
两种锁的加锁原理互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。两种锁的区别互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区持锁时间...
分类:
其他好文 时间:
2014-05-09 04:58:58
阅读次数:
297