关于多线程的异步技术有关问题

关于多线程的异步技术问题
新手请教,多线程中的异步技术,是不是相对于同步技术来说,除去如事件同步等的代码,就是异步了?
如下是同步技术代码
UINT ShowFront(LPVOID pParam)
{
CEdit *pEdit=(CEdit*)pParam; //消息参数pParam传递编辑框控件的句柄
pEdit->SetWindowText("");
critical_section.Lock();//锁定临界区

for(int i=0;i<10;i++)
{
itoa(i,&Array[i],10);

pEdit->SetWindowText(Array);

Sleep(1000);
}
critical_section.Unlock();
return 0;
}
UINT ShowBack(LPVOID pParam)
{
CEdit* pEdit=(CEdit*)pParam; //消息参数pParam传递编辑框控件的句柄
pEdit->SetWindowText("");
critical_section.Lock();//锁定临界区
for(int i=0;i<10;i++)
{
itoa(9-i,&Array[i],10);
pEdit->SetWindowText(Array);
Sleep(1000);
}
critical_section.Unlock();
return 0;
}
void CTextDlg::OnFront()  //点击顺序事件
{
// TODO: Add your control notification handler code here

CWinThread *pFront=AfxBeginThread(ShowFront,
&m_front,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pFront->ResumeThread();
}

void CTextDlg::OnBack() 
{
// TODO: Add your control notification handler code here
CWinThread *pFront=AfxBeginThread(ShowBack,
&m_back,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pFront->ResumeThread();

}



如下是异步技术代码
UINT ShowFront(LPVOID pParam)
{
CEdit *pEdit=(CEdit*)pParam; //消息参数pParam传递编辑框控件的句柄
pEdit->SetWindowText("");

for(int i=0;i<10;i++)
{
itoa(i,&Array[i],10);

pEdit->SetWindowText(Array);

Sleep(1000);
}

return 0;
}
UINT ShowBack(LPVOID pParam)
{
CEdit* pEdit=(CEdit*)pParam; //消息参数pParam传递编辑框控件的句柄
pEdit->SetWindowText("");

for(int i=0;i<10;i++)
{
itoa(9-i,&Array[i],10);
pEdit->SetWindowText(Array);
Sleep(1000);
}

return 0;
}
void CTextDlg::OnFront()  //点击顺序事件
{
// TODO: Add your control notification handler code here

CWinThread *pFront=AfxBeginThread(ShowFront,
&m_front,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pFront->ResumeThread();
}

void CTextDlg::OnBack() 
{
// TODO: Add your control notification handler code here
CWinThread *pFront=AfxBeginThread(ShowBack,
&m_back,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pFront->ResumeThread();

}
------解决方案--------------------
不要在线程里直接操作界面
不要为了异步而异步,如果2个工作无关,当然异步,如果大部分代码无关,则在访问共同资源时,做好保护
------解决方案--------------------
新手请教,多线程中的异步技术,是不是相对于同步技术来说,除去如事件同步等的代码,就是异步了?
线程本身是不可控制。
如果做得事情无关联,开几个线程去执行是无所谓(异步)。
如果几个事情之间互相影响,做好同步。

事件、临界区、信号量、互斥体都可以对线程做同步操作。

------解决方案--------------------
简要而言,所谓异步是
在需要长时间处理或等待的场合(比如访问web,或让服务器执行一个复杂操作)发出一个命令,然后无须等待直接执行后续命令或者返回,而发出的命令如果执行完毕,则发出一个通知(包含返回数据)程序,程序处理返回的数据

异步需要使用多线程
------解决方案--------------------
异步和线程关系不大

简单讲,线程代码执行阻塞函数,那就不是异步。执行非阻塞函数,那就是异步。
至于非阻塞函数怎么实现,并无定规,只要满足执行后不等待执行结果,立即返回即可。