ChinaUnix.net
相关文章推荐:

linux 线程锁

线初始化:int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr) 如果是非动态结构,也可以使用PTHREAD_MUTEX_INITIALIZER赋值进行初始化。 线销毁:int pthread_mutex_destroy(pthread_mutex_t *mutex) :int pthread_mutex_lock(pthread_mutex_t *mutex) 解:int pthread_mutex_unlock(pthread_mutex_t *mutex) try:int pthread_mutex_trylock(pthread_mutex_t *mu...

by luckpiky - Linux环境编程 - 2012-02-27 22:46:59 阅读(4543) 回复(3)

相关讨论

闲极无聊,为了浇灌已经荒芜的BLOG,胡乱写写代码。 /********************************************** 作者:猪头流氓 时间:Tue Dec 26 16:45:30 2006 文件名:tt.c 描述: gcc -o target tt.c -lpthread gcc -o target tt.c -lpthread -DLOCK **********************************************/ #include #include #ifdef LOCK pthread_mutex_t lm; #endif void * func(void * avg); int count; int main() { #ifdef LOCK ...

by playmud - Linux文档专区 - 2006-12-27 02:08:13 阅读(803) 回复(0)

#includestdio.h> #includepthread.h> #includestring.h> #includesys/types.h> #includeunistd.h> //此序加入了互斥 //父子线是并行,没有一定的顺序 //所以如果父线,子线没有可用的资源,你们序就退出 //如果子线,父线没有可用资源,那么序将会进入等待解状态,导致序不能正常结束. static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_t ntid; void printids(co...

by blueday - Linux文档专区 - 2008-04-14 00:35:55 阅读(822) 回复(0)

按照POSIX规定: 一个默认属性的互斥量被同一个线pthread_mutex_lock()两次 将发生死, 但是这个死有时候是编者所期望的 因此默认情况下, linux的死导致线休眠而不是返回EDEADLK 而SOLARIS和FreeBSD默认会返回EDEADLK错误 如果互斥量具有递归属性, 那么这个互斥量会带计数器, pthread_mutex_lock()导致这个计数器+1 而pthread_mutex_unlock()使这个计数器-1, 只有使计数器为0时, 线才能占有这个互斥量, 相应线才...

by safedead - C/C++ - 2009-02-23 14:10:38 阅读(4504) 回复(2)

linux上pthread多线优先的一个实现 2007-12-24 21:12 为了解决写饥饿的问题,利用条件变量实现了一个写优先的读写。 /* * *******************************设计思路*********************************** * 用一个全局变量的表示写线的个数,所有后于写线的读线 * 等待一个cont,即写线计数为0。 ********************************性能评价************************************ * RH-2.6.9-5.EL下,默认设置...

by pear_o_ - Linux文档专区 - 2008-12-10 16:23:24 阅读(1113) 回复(0)

做win32到linux序下的移植,目前需要带名字的线,以前用的Posix的信号量:sem_open,sem_post,sem_unlink等几个函数,发现WaitForSingleObject可以嵌套,面向进的。不知道用什么合适了,请教高手一下,谢谢! (貌似System V的信号量是不支持名字的,pthread直接面向进)

by ruger - Linux环境编程 - 2010-03-22 15:00:42 阅读(2417) 回复(1)

两个线,其中一个线仅对全局变量读,另一个线可读可写,是否可以不用做处理? 这样应该不会有不良后果吧,在线等高手解答,谢~~~~~

by los - Linux环境编程 - 2008-07-31 19:36:00 阅读(2921) 回复(10)

两个线,其中一个线仅对全局变量读,另一个线可读可写,是否可以不用做处理?

by los - C/C++ - 2008-07-31 16:28:35 阅读(4934) 回复(20)

在很多系统上,当一个的owner没有释放该unix,就退出了,那么默认的方式就是其它线再去加这个unix的时候,就会阻塞,造成死。而通过不同的属性初始化这个,我们能够改变这种默认的方式: pthread_mutexattr_setprotocol(&mattr, PTHREAD_PRIO_INHERIT); pthread_mutexattr_setrobust_np(&mattr,PTHREAD_MUTEX_ROBUST_NP); 通过设置的上面两个属性,我们就改变了默认的行为,当一个unix的owner死掉后,其它线...

linux多线程

by longmm1988 - C/C++ - 2013-04-15 11:12:36 阅读(3693) 回复(6)

看到内核中线同步的方法主要有:自旋和信号量(当然还有其他一些方法)。他们之间的区别主要是在获取不到资源时,进的行为不一样:自旋-等待、信号量-睡眠。 而用户态提供的线同步方法主要有:信号量、互斥量、。但是书上却只有这三者的用法,却没有给出这三者的区别,以及适用的场合。 求助高手,能否详细说说这三者的区别及适用场合呢? 如果有具体的实例代码最好了!

by zhf_69 - Linux环境编程 - 2009-05-26 11:45:52 阅读(4811) 回复(5)

之前在c/c++版提问过没人回答,在这个版提问,不知道有人解答吗?[code]#include #include #include #include #include #include static pthread_mutex_t mtx=PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond=PTHREAD_COND_INITIALIZER; int global_val = 0; void* test(void *argv) { printf("test before lock\n"); pthread_mutex_lock(&mtx); ...

by tklist - Linux环境编程 - 2015-04-03 10:10:53 阅读(2196) 回复(9)