c++程序开发利器vc6visual stdio系列都很好,个人最喜欢vc6,主要原因是快捷,classview和wizardbar功能强大,其他vs秒杀其他的vswindbgWinDbg是在windows平台下,强大的用户态和内核态调试工具。不比linux里的gdb差。软件异常退出,死锁,都是很容...
分类:
编程语言 时间:
2014-07-24 22:26:32
阅读次数:
248
线程池中的死锁情况
这次死锁发生在什么情况下呢?在最开始写线程池的时候,我设计了线程是可重用的,主要是通过Event信号实现,通过在每个线程核心工作代码执行完毕后会将自己归还到池中,然后等待Event信号。主线程会以循环超时阻塞的方式监视一个任务队列,当发现有任务时便会从线程池中取出一个线程,并设置它的任务和目标函数,然后去start或者resume,resume就是会设置Event信号让线程不再阻塞,这里,从池中取线程的方法_get和归还线程方法returnThread都已经加锁,_get和return...
分类:
编程语言 时间:
2014-07-23 17:15:01
阅读次数:
333
1.3.4 设计并发友好的应用程序
使用传统的命令风格编写多线程应用程序时,我们要面对两个问题:
■很难让现有的顺序代码变成并行的代码,因为要显式使用线程,必须修改大部分的基本代码。
■使用共享状态和锁定是困难的。必须仔细考虑如何使用锁来避免争用条件和死锁,留下足够的空间并行执行。
函数式编程给了我们答案:
■使用声明编式程风格时,可以在现有的代码中引入并行。替换很少几个基元,就能...
分类:
其他好文 时间:
2014-07-23 00:12:17
阅读次数:
229
netstat -ano | findstr 31900注意最后是pid堆栈的作用: 线程死锁分析 辅助CPU过高分析 线程资源不足分析 性能瓶颈分析 关键线程异常退出Windows:在运行java的控制台上按ctrl+break组合键 _ usefull?wait() —— 会释放监视锁slee....
分类:
编程语言 时间:
2014-07-22 22:50:16
阅读次数:
250
在log4j 1.x的版本中,我们想将日志输出的文件中,需要很复杂的配置。这点已经在2.0的版本中得到了大大的改善。
简单的配置,以及灵活的应用,已经成为了一种趋势。不管我们以追加的形式写日志文件,还是覆盖的形式,配置他们都是小菜。
还有比如日志文件大小自动分割,自动备份,无死锁,高性能等等。更令人欣喜的是,它支持json格式的配置,加载快,轻巧,异步读写。
好吧,来看它的使用吧。
看配置...
分类:
其他好文 时间:
2014-07-21 16:42:12
阅读次数:
247
Log4j 2.0在最近迎来了重大的版本升级。解决了1.x中死锁bug之外,性能也有10倍的提升。
同样的在最新版本中的新特性中。配置文件也不仅仅局限于xml和java特性文件properties。更是支持json和yaml的配置文件。
日志的使用在我们日常开发中经常用到。也有很多的高手遇到过日志死锁问题。在2.0中引入了异步日志处理。死锁问题得以解决。
好吧,介绍了这么多,进入它的hell...
分类:
其他好文 时间:
2014-07-21 15:36:05
阅读次数:
239
一、死锁的概念1.死锁的概念系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁。2.死锁产生的原因(1)进程推进顺序不当(2)对互斥资源的分配不当[并不是资源不足,但是剩余资源不足是有可能产生死锁的]。必须要指出的是,系统..
分类:
其他好文 时间:
2014-07-20 15:44:31
阅读次数:
173
进程管理
--死锁
一、死锁的概念
1.死锁的概念
系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁。
2.死锁产生的原因
(1)进程推进顺序不当
(2)对互斥资源的分配不当[并不是资源不足,但是剩余资源不足是有可能产生死锁的]。
必须要指出的是,系统资源不足并不是产生死锁的原因,进程资源如果不足则进程就不会被创建,只有在资源部分分配以后,剩余的资源不能满足某些个进程的请求,造成进程集无法推进的现象才是死锁。
3....
分类:
其他好文 时间:
2014-07-19 11:15:04
阅读次数:
207
1.名词: 1.任务的执行与任务的提交解耦 2.任务的执行策略-可中断,取消2.线程封闭机制: 针对单线程池而言,提高任务执行的速度,但是无需锁定3.饥饿死锁: 任务长期得不到执行,其实就是形成闭合的环路导致,共享资源互相锁定导致4.超时机制: 指定时间任务完不成,则重新加入的线程的执行队...
分类:
编程语言 时间:
2014-07-18 23:16:32
阅读次数:
250
任何时候当一段代码需要两个(或更多)资源时,都有潜在性的死锁。void SwapLists(List *list1, List *list2) { List *tmp_list; EnterCriticalSection(list1->m_section); EnterCriticalSection...
分类:
编程语言 时间:
2014-07-18 19:02:37
阅读次数:
203