锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
ModelName = strcat(ModelName,".txt"); // ModelName鐨勭被鍨嬫槸char *
榪欓噷ModelName鏄粠璋冪敤DLL鐨勭被鐨勫疄渚嬩腑浼犺繃鏉ョ殑涓涓瓧絎︿覆鎸囬拡錛屽湪DLL涓敱浜庝笂闈㈢殑璇彞錛屽鑷磋皟鐢ㄥ鐨勫瓧絎︽寚閽堣秺鐣岋紝浠庤屼駭鐢熶簡(jiǎn)榪欎釜閿欒銆傚洜涓篟elease娌℃湁鍐呭瓨瓚婄晫鎻愮ず錛屾墍浠ユ病鏈夊彂鐜拌繖涓棶棰橈紝浣嗚繖鏍風(fēng)殑鍐呭瓨闅愭?zhèn)-懗浠ヨ嚧鍛姐傚彲瑙佹搷浣滄寚閽堝唴瀛樺皬蹇?jī)湄?fù)涓婏紝鏁呮厧閲嶇殑鎶婂畠璁板綍涓嬫潵銆?
]]>
// Version 1
int main()
{

// Start timing here
for(i=0; i<1000000; i++)
{
pthread_mutex_lock(&mutex);
shareCounter++;
pthread_mutex_unlock(&mutex);
}
// Stop timing here

}
// Version 2
int main()

{

// Start timing here
for(i=0; i<1000000; i++)
{
SimpleMutex m(mutex);
sharedCounter++;
}
// Stop timing here

}
class SimpleMutex

{
public:
SimpleMutex(pthread_mutex_t & lock):myLock(lock)
{acquire();}
~SimpleMutex
{release();}
private:
int acquire()
{return pthread_mutex_lock(&myLock);}
int release()
{return pthread_mutex_unlock(&myLock);}
pthread_mutex_t & myLock;
};
// Version 3
int main()

{

// Start timing here
for(i=0; i<1000000; i++)
{
DerivedMutex m(mutex);
sharedCounter++;
}
// Stop timing here

}
class BaseMutex

{
public:
BaseMutex(pthread_mutex_t & lock)
{};
Virtual ~BaseMutex()
{};
};
class DerivedMutex:public BaseMutex

{
public:
DerivedMutex(pthread_mutex_t &lock):BaseMutex(lock),myLock(lock)
{acquire();}
~DerivedMutex()
{release();}
private:
int acquire()
{return pthread_mutex_lock(&myLock);}
int release()
{return pthread_mutex_unlock(&myLock);}
pthread_mutex_t & myLock;
};