ExitDeadLock.cc revision 62574298
162574298SShuo Chen#include "../Mutex.h" 262574298SShuo Chen 362574298SShuo Chen#include <stdio.h> 462574298SShuo Chen#include <stdlib.h> 562574298SShuo Chen 662574298SShuo Chenusing namespace muduo; 762574298SShuo Chen 862574298SShuo Chenvoid someFunctionCallsExit() 962574298SShuo Chen{ 1062574298SShuo Chen exit(1); 1162574298SShuo Chen} 1262574298SShuo Chen 1362574298SShuo Chenclass GlobalObject 1462574298SShuo Chen{ 1562574298SShuo Chen public: 1662574298SShuo Chen void doit() 1762574298SShuo Chen { 1862574298SShuo Chen MutexLockGuard lock(mutex_); 1962574298SShuo Chen someFunctionCallsExit(); 2062574298SShuo Chen } 2162574298SShuo Chen 2262574298SShuo Chen ~GlobalObject() 2362574298SShuo Chen { 2462574298SShuo Chen printf("GlobalObject:~GlobalObject\n"); 2562574298SShuo Chen MutexLockGuard g(mutex_); 2662574298SShuo Chen // clean up 2762574298SShuo Chen printf("GlobalObject:~GlobalObject cleanning\n"); 2862574298SShuo Chen } 2962574298SShuo Chen 3062574298SShuo Chen private: 3162574298SShuo Chen MutexLock mutex_; 3262574298SShuo Chen}; 3362574298SShuo Chen 3462574298SShuo ChenGlobalObject g_obj; 3562574298SShuo Chen 3662574298SShuo Chenint main() 3762574298SShuo Chen{ 3862574298SShuo Chen g_obj.doit(); 3962574298SShuo Chen} 40