MCI
MCI 媒体控制接口
MCI 命令字符串 mciSendString();
open close
play stop
record save
pause resume
seek capacity
info status
创建线程
AfxBeginThread()
线程函数
typedef UINT (AFX_CDECL AFX_THREADPROC)(LPVOID)
线程同步的方法:
1、临界区 -> CCriticalSection (应用程序对象)
CCriticalSection *cs;
cs = new CCriticalSection();
cs->lock();
保护代码
cs->unlock();
2、互斥量 -> CMutex (windows内核对象)
CMutex *mutex; //创建互斥量对象
mutex = new CMutex();
CSingleLock singleLock(mutex); //创建锁
singleLock.Lock(); //加锁
if(singleLock.IsLocked()) //如果加锁成功则执行被保护的代码
{
被保护代码
}
singleLock.Unlock(); //解锁
3、信号量 -> CSemaphore (windows内核对象)
CSemaphore *sp; //创建互斥量对象
sp = new CSemaphore(1, 1);
CSingleLock singleLock(mutex); //创建锁
singleLock.Lock(); //加锁
if(singleLock.IsLocked()) //如果加锁成功则执行被保护的代码
{
被保护代码
}
singleLock.Unlock(); //解锁
4、事件 -> CEvent (windows内核对象)
CEvent *event;
event = new CEvent(TRUE);
CSingleLock singleLock(mutex); //创建锁
singleLock.Lock(); //加锁
if(singleLock.IsLocked()) //如果加锁成功则执行被保护的代码
{
被保护代码
}
singleLock.Unlock(); //解锁
event->SetEvent();
MCI 媒体控制接口
MCI 命令字符串 mciSendString();
open close
play stop
record save
pause resume
seek capacity
info status
创建线程
AfxBeginThread()
线程函数
typedef UINT (AFX_CDECL AFX_THREADPROC)(LPVOID)
线程同步的方法:
1、临界区 -> CCriticalSection (应用程序对象)
CCriticalSection *cs;
cs = new CCriticalSection();
cs->lock();
保护代码
cs->unlock();
2、互斥量 -> CMutex (windows内核对象)
CMutex *mutex; //创建互斥量对象
mutex = new CMutex();
CSingleLock singleLock(mutex); //创建锁
singleLock.Lock(); //加锁
if(singleLock.IsLocked()) //如果加锁成功则执行被保护的代码
{
被保护代码
}
singleLock.Unlock(); //解锁
3、信号量 -> CSemaphore (windows内核对象)
CSemaphore *sp; //创建互斥量对象
sp = new CSemaphore(1, 1);
CSingleLock singleLock(mutex); //创建锁
singleLock.Lock(); //加锁
if(singleLock.IsLocked()) //如果加锁成功则执行被保护的代码
{
被保护代码
}
singleLock.Unlock(); //解锁
4、事件 -> CEvent (windows内核对象)
CEvent *event;
event = new CEvent(TRUE);
CSingleLock singleLock(mutex); //创建锁
singleLock.Lock(); //加锁
if(singleLock.IsLocked()) //如果加锁成功则执行被保护的代码
{
被保护代码
}
singleLock.Unlock(); //解锁
event->SetEvent();