shuai's profile娱乐精神PhotosBlog Tools Help

Blog


    2/13/2007

    同步!! 不同!!

     

    原子操作
     
    InterlockedIncrement 和 InterlockedDecrement
    相当于
    Interlocked.Increment 和 Interlocked.Decrement
     
    InterlockedExchange 和 InterlockedCompareExchange
    相当于
    Interlocked.Exchange 和 Interlocked.CompareExchange
     
     
    线程
    WaitForSingleObject(hThread, INFINITE)
    相当于
    thread.Join(Timeout.Infinite)
     
    WaitForMultipleObject(n, hThreads, TRUE, INFINITE)
    没有相对应的
    (试试Manual/AutoResetEvent.WaitAll 和 Monitor.Wait)
     
    SuspendThread(hThread) 和 ResumeThread(hThread)
    相当于
    thread.Suspend 和 thread.Resume()
     

    关键段
    EnterCriticalSection(&cs)
    有点像
    Monitor.Enter(object)
     
    LeaveCriticalSection(&cs)
    有点像
    Monitor.Exit(object)
     
    TryEnterCriticalSection(&cs)
    有点像
    Monitor.TryEnter(object)
     

    事件对象
    HANDLE hEvent = CreateEvent(&sa, TRUE, fInitialState, szName)
    相当于
    ManualResetEvent event = new ManualResetEvent(initialState)
     
    HANDLE hEvent = CreateEvent(&sa, FALSE, fInitialState, szName)
    相当于
    AutoResetEvent event = new AutoResetEvent(initialState)
     
    SetEvent(hEvent) 和 ResetEvent(hEvent)
    相当于
    event.Set() 和 event.Reset()
     
    WaitForSingleObject(hEvent, INFINITE)
    相当于
    event.WaitOne()
     
    WaitForMuSingleObject(n, hEvents, TRUE, INFINITE)
    相当于
    Manual/AutoResetEvent.WaitAll(events)
     
    WaitForMultipleObject(n, hEvents, FALSE, INFINITE)
    相当于
    Manual/AutoResetEvent.WaitAny(events)