当谈及 Lock-Free 编程时,我们常将其概念与 Mutex 或 Lock 联系在一起,描述要在编程中尽量少使用这些锁结构,降低线程间互相阻塞的机会,以提高应用程序的性能。类同的概念还有 "Lockless" 和 "Non-Blocking" 等。实际上,这样的描述只涵盖了 Lock-Free ...
分类:
其他好文 时间:
2014-10-24 09:15:55
阅读次数:
251
设置timer的函数在 CVHCallFlow定义bool CVHCallFlow::StartTimer2(PCTBCMCTimer *timer, int delayMS, TBX_UINT32 legid, int trigger_event){TBCAF_MUTEX_GET_SCOPE_BE...
分类:
其他好文 时间:
2014-10-23 15:56:54
阅读次数:
348
本文由该问题引入到内核锁的讨论,归纳例如以下为什么须要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是能够訪问全部内核数据的,因此要对共享数据进行保护,即相互排斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v...
分类:
其他好文 时间:
2014-10-23 13:59:45
阅读次数:
204
1 基础概念
信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。
一个任务要想访问共享资源,首先必须得到信号量,获取信号量的操作将把信号量的值减1,若当前信号量的值为负数,表明无法获得信号量,该任务必须挂起在该信号量的等待队列等待该信号量可用;若当前信号量的值为...
分类:
其他好文 时间:
2014-10-23 12:35:07
阅读次数:
166
为啥推荐使用scoped_lock和RAII idiom变流行是一样的原因:因为你可以确包任何情况下离开执行范围都会解锁mutex注意,这不仅仅是说你可能忘记调用unlock():在你的mutex被锁定之后,还有可能抛出异常,你写的unlock调用语句有可能永远没有机会执行,即使在lock()和un...
分类:
其他好文 时间:
2014-10-21 00:55:24
阅读次数:
379
题意:给你一个嵌套字典,询问字典的键值 ,输出字典的值。解题思路:我的想法是字典树套字典树,因为指针的大小为8 字节 所以动态字典树会超内存,开始以为不能静态,后来发现静态实现也挺简单。所以又改成静态。写到220行,还要特别讨论{"a":{}} 这种特判。解题代码: 1 // File Name:....
分类:
其他好文 时间:
2014-10-20 22:35:08
阅读次数:
270
#ifndef _PTHREAD_WRAP_H#define _PTHREAD_WRAP_H#include class hm_pthread_mutex{public: hm_pthread_mutex() { pthread_mutex_init(&m_mutex, 0); } ~hm_pth....
分类:
其他好文 时间:
2014-10-20 11:29:25
阅读次数:
220
pthread_cond_wait()用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。pthread_cond_wait()必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入...
分类:
其他好文 时间:
2014-10-19 23:12:41
阅读次数:
388
下面内容来自:http://blog.csdn.net/morewindows/article/details/7481609前面介绍了关键段CS、事件Event、互斥量Mutex在经典线程同步问题中的使用。本篇介绍用信号量Semaphore来解决这个问题。首先也来看看如何使用信号量,信号量Sema...
分类:
编程语言 时间:
2014-10-19 22:45:24
阅读次数:
227
摘自资料(linux 与Windows不同) 线程间无需特别的手段进行通信,由于线程间能够共享数据结构,也就是一个全局变量能够被两个线程同一时候使用。只是要注意的是线程间须要做好同步,一般用mutex。能够參考一些比較新的UNIX/Linux编程的书,都会提到Posix线程编程,比方《UNIX环境高...
分类:
编程语言 时间:
2014-10-19 22:43:32
阅读次数:
712