不得不承认,自从上一次做一个gps项目后,再也没有使用过多线程的知识,前几天被问到这方面的东西,竟然都想不起来,又查了些资料,加强下记忆,在此后的日子里我要建成我自己的一个封装程序库,希望也会有一个线程库。
线程的同步方式:
1.临界区 CRITICAL_SECTION
一个简单的例子:
CRITICAL_SECTION g_cs;//声明一个临界区
char g_Array[10];//共享资源
UINT threadFunc1(void* pParam)
{
//进入临界区
EnterCriticalSection(&g_cs);
for(int i=0;i<10;++i)
{
//操作共享资源
g_Array[i] = 1;
}
//离开临界区
LeaveCriticalSection(&g_cs);
return 0;
}
UINT threadFunc2(void* pParam)
{
//进入临界区
EnterCriticalSection(&g_cs);
for(int i=0;i<10;++i)
{
//操作共享资源
g_Array[i] =2;
}
//离开临界区
LeaveCriticalSection(&g_cs);
return 0;
}
main()
{
//初始化临界区
InitializeCriticalSection(&g_cs);
//启动线程
AFXBeginThread(threadFunc1);
AFXBeginThread(threadFunc2);
//等待计算
Sleep(100);
}
2.互斥体