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

DwyaneCV 2014-01-02 07:48:02
新手请教,多线程中的异步技术,是不是相对于同步技术来说,除去如事件同步等的代码,就是异步了?
如下是同步技术代码
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();

}
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkonthesky 2014-01-26
  • 打赏
  • 举报
回复
异步和线程关系不大 简单讲,线程代码执行阻塞函数,那就不是异步。执行非阻塞函数,那就是异步。 至于非阻塞函数怎么实现,并无定规,只要满足执行后不等待执行结果,立即返回即可。
worldy 2014-01-03
  • 打赏
  • 举报
回复
简要而言,所谓异步是 在需要长时间处理或等待的场合(比如访问web,或让服务器执行一个复杂操作)发出一个命令,然后无须等待直接执行后续命令或者返回,而发出的命令如果执行完毕,则发出一个通知(包含返回数据)程序,程序处理返回的数据 异步需要使用多线程
华美乐章 2014-01-03
  • 打赏
  • 举报
回复
新手请教,多线程中的异步技术,是不是相对于同步技术来说,除去如事件同步等的代码,就是异步了? 线程本身是不可控制。 如果做得事情无关联,开几个线程去执行是无所谓(异步)。 如果几个事情之间互相影响,做好同步。 事件、临界区、信号量、互斥体都可以对线程做同步操作。
ouyh12345 2014-01-03
  • 打赏
  • 举报
回复
不要在线程里直接操作界面 不要为了异步而异步,如果2个工作无关,当然异步,如果大部分代码无关,则在访问共同资源时,做好保护
DwyaneCV 2014-01-03
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
简要而言,所谓异步是 在需要长时间处理或等待的场合(比如访问web,或让服务器执行一个复杂操作)发出一个命令,然后无须等待直接执行后续命令或者返回,而发出的命令如果执行完毕,则发出一个通知(包含返回数据)程序,程序处理返回的数据 异步需要使用多线程
那在多线程中和异步相关的函数是哪些?是不是线程池啊

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧