怎样创建线程 和 结束线程

slwang2003 2006-04-26 10:25:40
如题
...全文
365 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2006-05-09
  • 打赏
  • 举报
回复
关注中~
qrlvls 2006-05-02
  • 打赏
  • 举报
回复
方法不是唯一的,但大致是相同的,可以用MSDN搜索
_beginthread
AfxBeginThread
CreateThread
CWinThread
线程的结束一般来说有三种方式:主动结束和被动结束、强制结束
主动结束指线程的存在只与线程本身的操作相关,操作完成,退出线程函数,则线程结束
被动结束通常由其它线程向该线程发送线程消息、设置内核对象事件等方法通知该线程,而该线程在检测到通知后退出线程函数
强制结束是指通过调用TerminateThread等函数终止线程执行(不推荐,可能造成资源释放不完全)

与线程相关的内容应该形成比较体的知识,因此还应该参考更多的理论方面的书籍,eg.《Windows核心编程》
MINXINGHUA 2006-05-01
  • 打赏
  • 举报
回复
在类创建线程一定注意把线程函数设计为全局函数,参数是(LPVOID pParam),否则编译通不过;另外共享资源也要设计成全局的,如果在其它地方引用,需要外加exten操作符。
lzf8977 2006-05-01
  • 打赏
  • 举报
回复
详见《Windows核心编程》!!
一本好书,
sycnick 2006-04-30
  • 打赏
  • 举报
回复
详见《Windows核心编程》!!
做鸡真好吃 2006-04-30
  • 打赏
  • 举报
回复
en~
killerzhu 2006-04-27
  • 打赏
  • 举报
回复
为什么我在一个类里面创建新的线程就不行呢?
piaozhou_cd 2006-04-26
  • 打赏
  • 举报
回复
最常用的工作线程:
UINT ThreadFunc(LPVOID p); // 工作线程函数

创建:
CWinThread * pThread = NULL;
pThread = AfxBeginThread(ThreadFunc, this); // this为传给线程函数的参数

结束:
if (pThread != NULL)
::TerminateThread(pThread->m_hThread, 0);
或可在线程函数内检测外部变量值,以决定是否退出
UINT ThreadFunc(LPVOID p)
{
CMyObject *pobj = (CMyObject *)p;
while (! p->bOver)
{
// do your work
}
}

外部写上这句,线程便结束
this->bOver = true ; // this为传入线程函数对象的指针





Practise_Think 2006-04-26
  • 打赏
  • 举报
回复
api: CreatThread()
vc:_beginthreadex()

在MSDN里看看上面的接口说明
yjgx007 2006-04-26
  • 打赏
  • 举报
回复
详见《Windows核心编程》
yishow 2006-04-26
  • 打赏
  • 举报
回复
piaozhou_cd(漂舟)方法简单实用,上手快
y_cc 2006-04-26
  • 打赏
  • 举报
回复
beginthreadex;
_beginthreadex;

CreatThread;
AfxBeginThread;

初学者建议用AfxBeginThread;比较简单
http://www.verylab.com/dispbbs.asp?BoardID=5&replyID=42&id=12&skin=1
dasiu 2006-04-26
  • 打赏
  • 举报
回复
题目太大,建议到CSDN或GOOGLE搜索

15,471

社区成员

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

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