(转载于breaksoftware的csdn博客)之前的几篇文章已经讲解了在DllMain中创建并等待线程导致的死锁的原因。是否还记得,我们分析了半天汇编才知道在线程中的死锁位置。如果对于缺乏调试经验的同学来说,可能发现这个位置有点麻烦。那么本文就介绍几个例子,它们会在线程明显的位置死锁掉。 ...
                            
                            
                                分类:
编程语言   时间:
2015-02-02 22:47:28   
                                阅读次数:
292
                             
                         
                    
                        
                            
                            
                                (转载于breaksoftware的csdn博客)不知道大家是否思考过一个过程:系统试图运行我们写的程序,它是怎么知道程序起始位置的?很多同学想到,我们在编写程序时有个函数,类似Main这样的名字。是的!这就是系统给我们提供的控制程序最开始的地方(注意这儿是提供给我们的,而实际有比这个还要靠前的ma...
                            
                            
                                分类:
系统相关   时间:
2015-02-02 22:43:04   
                                阅读次数:
268
                             
                         
                    
                        
                            
                            
                                (转载于breaksoftware的csdn博客)本文介绍使用Windbg去验证《DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子》中的结论,调试对象是文中刚开始那个例子。 1 g 让程序运行起来 2 ctrl+break 中断程序 3 ~ 查看...
                            
                            
                                分类:
其他好文   时间:
2015-02-02 22:40:18   
                                阅读次数:
189
                             
                         
                    
                        
                            
                            
                                在MySQL中尽量少使用UPDATE ...WHERE ...ORDER BY ...LIMIT语句,原因是MySQL会对where条件匹配的所有记录加上X锁,如果多个线程同事执行这条语句,就会有非常大的概率发生死锁,而且MySQL服务器不能自动的去解除这种死锁。
下面的例子证实了这一点,先创建一张record表,再插入几条记录
mysql> create table record(...
                            
                            
                                分类:
其他好文   时间:
2015-01-31 14:51:28   
                                阅读次数:
145
                             
                         
                    
                        
                            
                            
                                摘自:http://sqcjy111.iteye.com/blog/1183928查看锁表进程SQL语句1: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name,...
                            
                            
                                分类:
数据库   时间:
2015-01-29 17:31:46   
                                阅读次数:
123
                             
                         
                    
                        
                            
                            
                                SELECT DBT.DATABASE_ID,
       DB_NAME(DBT.DATABASE_ID) '数据库名',      
       DBT.TRANSACTION_ID,
       AT.NAME,
       AT.TRANSACTION_BEGIN_TIME,       
       CASE AT.TRANSACTION_TYPE    
          ...
                            
                            
                                分类:
数据库   时间:
2015-01-29 10:32:56   
                                阅读次数:
268
                             
                         
                    
                        
                            
                            
                                http://www.cnblogs.com/shanksgao/p/4254942.html 高兄这篇文章很好的谈论了由于数据隐式转换造成执行计划不准确,从而造成了死锁。那如果在事情出现之前发现了这类潜在的风险岂不是更好? 那么我们来看一个简单的例子,如代码清单1所示。 1: SELECT * 2...
                            
                            
                                分类:
数据库   时间:
2015-01-28 12:58:27   
                                阅读次数:
222
                             
                         
                    
                        
                            
                            
                                手动修改某表的记录,弹出以下错误:
然后尝试用PL/SQL语句修改记录,十多分钟过去了,一直显示正在执行;
结论:死锁了!!
查看被锁对象:
SELECT l.session_id sid,
       s.serial#,
       l.locked_mode 锁模式,
       l.oracle_username 登录用户,...
                            
                            
                                分类:
数据库   时间:
2015-01-27 13:31:09   
                                阅读次数:
161
                             
                         
                    
                        
                            
                            
                                java线程转储java的线程转储可以被定义为JVM中在某一个给定的时刻运行的所有线程的快照。一个线程转储可能包含一个单独的线程或者多个线程。在多线程环境中,比如J2EE应用服务器,将会有许多线程和线程组。每一个线程都有它自己的调用堆栈,在一个给定时刻,表现为一个独立功能。线程转储将会提供JVM中所...
                            
                            
                                分类:
编程语言   时间:
2015-01-27 12:43:21   
                                阅读次数:
482
                             
                         
                    
                        
                            
                            
                                线程同步、线程死锁
    在上一篇文章中,有一个模拟售卖火车票系统,在卖车票的程序代码中,极有可能碰到一种意外,就是同一张票号被打印两次多次,也可能出现打印出0甚至负数的票号。具体表现为:假设tickets的值为1的时候,线程1刚执行完if(tickets>0)这行代码,正准备执行下面的代码,就在这时,操作系统将CPU切换到了线程2上执行,此时tickets的值仍为1,线程2执行完上面两行代码...
                            
                            
                                分类:
编程语言   时间:
2015-01-26 00:08:03   
                                阅读次数:
326