用 C++ 寫多執行緒同步程式時常用到的功能有 InterlockedIncrement、CRITICAL_SECTION 和 Semaphore,其對照在 C# 下的使用方式為:
1. InterlockedIncrement
C++ 的用法如下:
UINT nCt =0;
InterlockedIncrement( &nCt );
C# 的用法如下:
int nCt =0;
System.Threading.Interlocked.Increment( ref uCt );
2. CRITICAL_SECTION
C++ 的用法如下:
CRITICAL_SECTION g_cs;
EnterCriticalSection( &g_cs );
{
//...
}
LeaveCriticalSection( &g_cs );
C# 的用法如下:
Object cs = new Object();
lock (cs)
{
//...
}
3. Semaphore
C++ 的用法如下:
HANDLE m_Handle =CreateSemaphore( NULL, 1, 1, L"SemaphoreName" );
WaitForSingleObject( m_Handle, nWaitTime );
{
//...
}
ReleaseSemaphore( m_Handle, 1, NULL );
CloseHandle( m_Handle );
C# 的用法如下:
private static AutoResetEvent m_Handle =new AutoResetEvent( true );
m_Handle.WaitOne();
{
//...
}
m_Handle.Set();
訂閱:
張貼留言
(
Atom
)
0 意見 :
張貼留言