/************************************************************************
** Event 事件
** 同步机制中最富有弹性的机制了。唯一的目的就是成为激发状态或未激发状态
** 而这两种状态完全由程序控制。所以你可以精确告诉一个Event对象做什么事
** 以及什么时候去做。
** 
** 主要函数:
** CreateEvent
** OpenEvent
** SetEvent
** ResetEvent
** PulseEvent
** 参考资料
** http://www.codeproject.com/Articles/438/Introduction-to-Multi-threaded-Code
************************************************************************/
#include <windows.h>
#include <process.h>
#include <stdio.h>
HANDLE hEvent1, hEvent2;
int a[ 
5 ];
HANDLE hManualEvent;
const int LOOP_COUNT = 
10;
UINT __stdcall Thread( void*
 pParams )
{
    int num = 
1;
    for( 
int k=
0; k < LOOP_COUNT; k++
 )
    {
        WaitForSingleObject( hEvent2, INFINITE );
        for ( 
int i = 
0; i < 
5; i++ ) a[ i ] =
 num;
        SetEvent( hEvent1 );
        num++
;
    }
    return 0;
}
UINT __stdcall ManualThread( void*
 pParams )
{
    for ( 
int k = 
0; k < LOOP_COUNT; k++
 )
    {
        WaitForSingleObject( hManualEvent, INFINITE );
        printf( "ManualThread is  working %d\n", k );
        // 把手动的Event改为无信号状态
        if ( k == 
5 )
        {
            ResetEvent( hManualEvent );
            _endthreadex( 0 );
        }
    }
    return 0;
}
int main( 
void )
{
    hEvent1 =
 CreateEvent(
        NULL, 
        FALSE,         // 是否手动
        TRUE,          
// 初始化时是否有信号
        NULL );
    hEvent2 =
 CreateEvent( NULL, FALSE, FALSE, NULL );
    // 手动的Event
    hManualEvent =
 CreateEvent( NULL, TRUE, FALSE, NULL );
    UINT threadID = 
0;
    _beginthreadex( NULL, 0, Thread, NULL, 
0, &
threadID );
    HANDLE hHandle = (HANDLE)_beginthreadex( NULL, 
0, ManualThread, NULL, 
0, 
0 );
    // 将手动的Event改为有信号状态
    SetEvent( hManualEvent );
    for( 
int k=
0; k < LOOP_COUNT; k++
 )
    { 
        WaitForSingleObject( hEvent1, INFINITE );
        printf( "%d %d %d %d %d\n", 
            a[ 0 ], a[ 
1 ], a[ 
2 ],
            a[ 3 ], a[ 
4 ] );
        SetEvent( hEvent2 );
    }
    WaitForSingleObject( hHandle, INFINITE );
    printf("***** Finish ******!");
    return 0;
} 
  
  
 
转载于:https://www.cnblogs.com/c007136/archive/2012/08/17/2643985.html
                
        
 
相关资源:各显卡算力对照表!