Chinaunix首页 | 论坛 | 博客
  • 博客访问: 42743
  • 博文数量: 32
  • 博客积分: 1326
  • 博客等级: 中尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-25 18:13
文章分类

全部博文(32)

文章存档

2010年(32)

我的朋友
最近访客

分类: WINDOWS

2010-06-24 00:35:21

#include <afxmt.h>
CCriticalSection g_cs;
char g_cArray[10];

UINT ThreadProcFirst(LPVOID pParam);
UINT ThreadProcSecond(LPVOID pParam);

void CMfcCriticalSectionDlg::OnButton1()
{
    AfxBeginThread(ThreadProcFirst, NULL);
    AfxBeginThread(ThreadProcSecond, NULL);

    Sleep(300);
    /*Sleep(1000);*/
    
    CString strResult = CString(g_cArray);
    AfxMessageBox(strResult);
}

UINT ThreadProcFirst( LPVOID pParam )
{
    g_cs.Lock();
    printf("First");
    for (int i = 0; i < 10; ++i)
    {
        g_cArray[i] = 'a';
        Sleep(1);
    }

    g_cs.Unlock();
    return 0;
}

UINT ThreadProcSecond( LPVOID pParam )
{
    g_cs.Lock();
    printf("Second");
    for (int i = 0; i < 10; ++i)
    {
        g_cArray[10-i-1] = 'b';
        Sleep(1);
    }

    g_cs.Unlock();
    return 0;
}


阅读(973) | 评论(0) | 转发(0) |
0

上一篇:临界区示例

下一篇:临界区优缺点

给主人留下些什么吧!~~