91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-23
  • 語言: C/C++
  • 標簽: c++??buffer??日志??

資源簡介

基本想法: 方法1: 1、使用默認緩存5M 2、默認線程使用的內存為128K,即最多默認支持40個線程 3、初始化申請一塊5M內存,然后進行分割,線程使用的定義為GROUP,沒一條日志使用的為ITEM 4、運行過程中進行動態管理,內存用完后申請新的空間,一次為5M 5、線程使用完一個group后可以在使用其他的group,且不限在相同的原子buffer。 可能的問題在于,多次申請的問題,經過測試基本可以用。 方法2: 1、使用默認緩存5M 2、默認線程使用的內存為128K,即最多默認支持40個線程 3、初始化申請一塊5M內存,然后進行分割,線程使用的定義為GROUP,沒一條日志使用的為ITEM 4、運行過程中進行動態管理,內存用完后丟失 5、線程使用完一個group后可以在使用其他的group,且不限在相同的原子buffer。 可能的問題在于支持的線程是有上線的。 歡迎你的建議。

資源截圖

代碼片段和文件信息


#include?
#include?
#include?

#include?“NonLockingBuffer.h“

#define??PORT_NUMBER?9998

#define?GROUP_ITEM_COUNT?128
#define?THREAD_RUN_LOOP_TIMES?60
#define?MAX_THREAD_COUNT_NUMBER?40


class?CThreadTime
{
public:????
????void????BeginGetElapsedTime();
????__int64?EndGetElapsedTime();

private:
????__int64?FileTimeToQuadWord(PFILETIME?pft);

private:
????FILETIME?ftKernelTimeStart;
????FILETIME?ftKernelTimeEnd;
????FILETIME?ftUserTimeStart;
????FILETIME?ftUserTimeEnd;
????FILETIME?ftDummy;
};

//?Get?the?time?elapsed?since?the?thread?start
inline?void?CThreadTime::BeginGetElapsedTime()
{
????GetThreadTimes(GetCurrentThread()?&ftDummy?&ftDummy?&ftKernelTimeStart?&ftUserTimeStart);
}

//?Calculate?the?time?elapsed?
inline?__int64?CThreadTime::EndGetElapsedTime()
{
????GetThreadTimes(GetCurrentThread()?&ftDummy?&ftDummy?&ftKernelTimeEnd?&ftUserTimeEnd);

????__int64?qwKernelTimeElapsed?=?FileTimeToQuadWord(&ftKernelTimeEnd)?-?FileTimeToQuadWord(&ftKernelTimeStart);
????__int64?qwUserTimeElapsed?=?FileTimeToQuadWord(&ftUserTimeEnd)?-?FileTimeToQuadWord(&ftUserTimeStart);

????//?Get?total?time?duration?by?adding?the?kernel?and?user?times.
????//?the?default?is?100ns?so?we?convert?it?to?ms
????//return?(qwKernelTimeElapsed?+?qwUserTimeElapsed)?/?10000;

????return?(qwKernelTimeElapsed?+?qwUserTimeElapsed)?/?10;
}

inline?__int64?CThreadTime::FileTimeToQuadWord(PFILETIME?pft)?
{
????return?(Int64ShllMod32(pft->dwHighDateTime?32)?|?pft->dwLowDateTime);
}


class?CStopwatch?
{
public:
????CStopwatch()?
????{?
????????QueryPerformanceFrequency(&m_liPerfFreq);
????????Start();
????}

????void?Start()?
????{?
????????QueryPerformanceCounter(&m_liPerfStart);
????}

????__int64?Now()?const?
????{
????????//Returns?#?of?milliseconds?since
????????//Start?was?called

????????LARGE_INTEGER?liPerfNow;
????????QueryPerformanceCounter(&liPerfNow);

????????return?(((liPerfNow.QuadPart?-?
????????????m_liPerfStart.QuadPart)?*?1000)/
????????????m_liPerfFreq.QuadPart);
????}

private:

????//Counts?per?second
????LARGE_INTEGER?m_liPerfFreq;???

????//Starting?count
????LARGE_INTEGER?m_liPerfStart;??
};

//?2
//CThreadTime?ElapsedTime;
//ElapsedTime.BeginGetElapsedTime();

//?4
//CStopwatch?spWatch;

//?do?................

//2
//int?iElapse?=?ElapsedTime.EndGetElapsedTime();

//4
//__int64?iElapse?=?spWatch.Now();


class?WriteLogToFile
{
public:
????WriteLogToFile()
????????:?outfile(“d:\\log\\log.txt“?std::ofstream::binary?|?std::ofstream::app)
????{

????}

????virtual?void?Handle(Item*?entry)
????{
????????outfile.write?(entry->GetItemPointer()?entry->GetDataLen());
????????outfile.flush();
????????entry->SetDataSign(false);

????????//printf(“entry?size?%d\n“entry->Size());
????}

????~WriteLogToFile()
????{
????????outfile.close();
????}
private:
????std::ofstream?outfile;
};

class?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2422??2013-12-25?14:00??Common.h
?????文件???????12743??2013-12-25?16:11??NonLockingBuffer.cpp
?????文件???????13666??2013-12-25?14:46??NonLockingBuffer.h
?????文件????????4128??2013-12-23?11:21??NonLockingBuffer.vcproj
?????文件????????1369??2013-12-23?10:32??SpinLock?-?副本.h

評論

共有 條評論