线程函数

转载 2007年09月24日 10:25:00
 
在启动一个线程之前,必须为线程编写一个全局的线程函数,这个线程函数接受一个32位的LPVOID作为参数,返回一个UINT
一般来说,C++的类成员函数不能作为线程函数。这是因为在类中定义的成员函数,编译器会给其加上this指针。
如果一定要以类成员函数作为线程函数,通常有如下解决方案:
1)将该成员函数声明为static类型,去掉this指针;
将成员函数声明为静态虽然可以解决作为线程函数的问题,但是它带来了新的问题,那就是static成员函数只能访问static成员。解决此问题的一种途径是可以在调用类静态成员函数(线程函数)时将this指针作为参数传入,并在该线程函数中用强制类型转换将this转换成指向该类的指针,通过该指针访问非静态成员。
2)不定义类成员函数为线程函数,而将线程函数定义为类的友元函数。这样,线程函数也可以有类成员函数同等的权限;
3)可以对非静态成员函数实现回调,并访问非静态成员。
 
详细内容参照:深入浅出Win32多线程程序设计之线程控制
 

相关文章推荐

API之进程和线程函数

UNP函数笔记十六: 线程

第二十六章  线程: #include int pthread_create(pthread_t * tid, const pthread_attr_t...

POSIX线程清理函数

#include #include #include // Sleep pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; pthrea...
  • ba_jie
  • ba_jie
  • 2011-09-16 17:45
  • 1417

线程 poll函数

  • 2015-01-04 17:02
  • 10KB
  • 下载

线程函数秘籍

  • 2013-05-23 20:58
  • 17KB
  • 下载

线程的分离状态 pthread_attr_setdetachstate 函数使用

在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)