求一多线程问题

tb01412 2004-07-09 11:33:21
请问如何在VC中实现一个多线程的程序,以最简短代码示例一下,在此多谢了!
...全文
138 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangjingbo 2004-08-11
  • 打赏
  • 举报
回复
createthread
oyljerry 2004-08-11
  • 打赏
  • 举报
回复
一个简单的例子:
本例中单独设置了一个线程监视当前时间,在Visual C++中线程的简单调用语句为:AfxBegin -Thread(ProcName, param, Priority),第一个参数是线程函数名,param是准备传送给线程的任意32位值,最后一个是线程的优先级(可用常量表示)。这里先定义一个线程函数:  

  UINT timeThreadProc(LPVOID pParam) //定义线程,必须照此格式
  {
  CTime gt; //定义时间变量
  int hh,mm,ss; //为存储时间定义整型变量
  do //判断时间的循环
  {
  gt=CTime::GetCurrentTime();
  //提取当前时间
  hh=gt.GetHour(); //分别提取时、分、秒 mm=gt.GetMinute();
  ss=gt.GetSecond();
  } while ((h!=hh)  (m!=mm)  (s!=ss));
  //判断当前时间
  flag=0; //置状态标志
  ExitWindowsEx(EWX_SHUTDOWN,0);
  //关闭计算机
  return 0;
  }

  在上面这个函数中,第一行的格式不能改变,其中的h、m、s是三个全局变量,存储的是设定的时间(时、分、秒)值。通过循环判断,如果当前时间满足设定的条件,则调用MFC的函数ExitWindowsEx(UNIT uFlags, DWORD dwReserved)来关闭计算机。
Pandona 2004-08-11
  • 打赏
  • 举报
回复
huahao0672:
“CreateThread()函数有很多问题”,我不是很明白,请详细说明一下。
huahao0672 2004-08-11
  • 打赏
  • 举报
回复

樓上的各位大俠,都說的不錯,但是在建立一個線程的時候千萬不要用下面這個
函數 CreateThread()這個函數,這個函數在建立的過程當中,會存在很多的問題.
這點請大家一定要記住了.

如是是 C Runtime library 請用_beginthreadEX()
brainholmes 2004-07-14
  • 打赏
  • 举报
回复
HANDLE hThread;
DWORD dwThreadID;
hThread=::CreateThread(NULL,0,ThreadProc,0,0,&dwThreadID);

DWORD WINAPI ThreadProc(LPVOID pvparam)
{
return 0;
}
我不清楚AfsBeginThread 和他的区别
tb01412 2004-07-13
  • 打赏
  • 举报
回复
楼上的,你有QQ号吗?希望在QQ里请教你一些问题!我的QQ是382270255
ShaftWhy 2004-07-13
  • 打赏
  • 举报
回复
报的什么错误?
tb01412 2004-07-13
  • 打赏
  • 举报
回复
谢谢楼上所有的人,我现在所遇到的问题是:在一个按钮的点击事件中能调用,但我想在对话框生成时就启用一个线程,这时编译器会报出错误,这是为什么?
huahao0672 2004-07-12
  • 打赏
  • 举报
回复
建議你去看一下侯捷大師的<WIN32多線程程式設計>這本書

裏面對多線程有很詳細的描述.相信讀完以後,收穫不小

Flyingfoxoo 2004-07-11
  • 打赏
  • 举报
回复
我的vc很菜啊
vcforever 2004-07-11
  • 打赏
  • 举报
回复
创建工作者线程比较容易,工作者线程一般用来完成纯粹的计算工作,不涉及GUI !

首先定义一个线程函数,在该线程函数中完成一些后台操作
UINT MyThreadFunc(LPVOID lparam)
{
//线程要实现的功能;
return 0;
}

在主线程中,例如button的BN_CLICK消息响应函数中
AfxBeginThread(MyThreadFunc, this);//第二个参数视你要传递给线程的具体内容决定

这样你在点击按钮的时候就可以启动一个线程了!
lianglp 2004-07-11
  • 打赏
  • 举报
回复
DWORD WINAPI threadproc(LPARAM lParam)//这个就是你要执行的线程处理过程
{
...
return NULL ;
}

CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)threadproc,NULL,NULL,NULL) ;
这样就可以创建你要的线程了。
pmwin 2004-07-10
  • 打赏
  • 举报
回复
用AfxBeginThread新建线程
comman_wang 2004-07-09
  • 打赏
  • 举报
回复
看看临界区、事件、信号量和互斥体的使用例程,这个网上很多的。

15,471

社区成员

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

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