摘要:
本文即考虑了线程安全,又保证了效率,代码为单例,语言为C++,代码如下:#include <iostream>using namespace std;void Lock(){ //some mutex code}void UnLock(){ //some mutex code}class Singleton{public: static Singleton* GetInstance() { if (m_Instance == NULL) // 如果已经创建了单例,那么就不用每次进去加锁了 { ... 阅读全文
摘要:
本文的单例代码考虑了线程安全,但是由于每次Lock() UnLock()所花费的时间比较多,所以效率不高,代码如下:#include <iostream>using namespace std;void Lock(){ //some mutex code}void UnLock(){ //some mutex code}class Singleton{public: static Singleton* GetInstance() { Lock(); if (m_Instance == NULL) // 如果在这句... 阅读全文
摘要:
本文实现的是不考虑线程安全的初级单例Singleton的C++代码,目的是为了学习单例,考虑线程安全的代码放在后面的blog里。#include <iostream>using namespace std;class Singleton{public: static Singleton* GetInstance() // 得到单例 { if (m_Instance == NULL) { m_Instance = new Singleton(); cout<<"m_Instance ... 阅读全文
摘要:
#include <iostream>using namespace std;class A{public: A() { //test = 1; //aa } static int test;};int A::test = 1; //bbint main(){ cout<<A::test<<endl; return 1;}根据C++ Primer中所叙述,static成员必须在类外进行初始化,而不能在构造函数内进行初始化,于是进行如下实验:1 令aa行enable,令bb行disable,链接提示:1... 阅读全文
摘要:
问题定位步骤:1、 用root帐户 遍历 /proc/进程ID/fd目录,如果该目录下文件数比较大(如果大于10,一般就属于socket泄漏),根据该进程ID,可以确认该进程ID所对应的名称。2、 重启程序恢复服务,以便后续查找问题。3、 strace 该程序并记录strace信息。strace –p 进程ID >>/tmp/stracelog.log 2>&14、 查看 /proc/进程ID/fd 下的文件数目是否有增加,如果发现有增加,记录上一个socket编号,停止strace5、 确认问题代码的位置。打开/tmp/stracelog.log,从尾部向上查找cl 阅读全文