huangyi5209

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  0 Posts :: 13 Stories :: 0 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

搜索

  •  

最新评论

 

    #include <iostream>
#include 
<Windows.h>

using namespace std;

volatile LONG lfsSpinLock = 0;
int num = 0;
// lfsSpinLock is a 'long' and when it is '1' it is locked, and '0' is unlocked
#define  ENTER_LFS_LOCK_   while( InterlockedExchange( &lfsSpinLock, 1 ) == 1 ){ Sleep( 10 ); }
#define  EXIT_LFS_LOCK_    InterlockedExchange( &lfsSpinLock, 0 );


void Func1() 


    
//Wait to access the resource.  等待资源 

    ENTER_LFS_LOCK_;

    
for (int i = 0;i < 20; i++)
    
{
        num
++;
        cout
<<num<<endl;
    }
    

    EXIT_LFS_LOCK_;

}
 



int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hThrd[
4];

    DWORD dwThrdID[
4];
    hThrd[
0= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Func1, NULL, 0&dwThrdID[0]);
    hThrd[
1= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Func1, NULL, 0&dwThrdID[1]);
    hThrd[
2= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Func1, NULL, 0&dwThrdID[2]);
    hThrd[
3= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Func1, NULL, 0&dwThrdID[3]);

    WaitForMultipleObjects(
4, hThrd, TRUE, INFINITE);
    
for (int i=0;i<4;i++)
    
{
        CloseHandle(hThrd[i]);
    }


    system(
"pause");
    
return 0;
}
posted on 2011-03-28 16:09 huangyi5209 阅读(860) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理