博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 用静态成员函数作为进程入口,传递this指针
阅读量:5937 次
发布时间:2019-06-19

本文共 1160 字,大约阅读时间需要 3 分钟。

为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?


将线程函数作为静态函数

解决方案: 将this指针作为参数传递给静态函数,这样可以通过该this指针访问所有的私有变量,通过this指针访问成员函数。

 

下面的demo是个人作品,已经编译运行过。

#include "stdafx.h"#include 
#include
#include
#include
using namespace std;class Person{public: Person(int m); ~Person(); void start(); static void threadProcess(LPVOID arg); void spendMoney();private: int money;};Person::Person(int m){ money = m;}void Person::spendMoney(){ cout << "花钱" << endl; while (money) { money--; cout << "花去1块,还剩" <
<< endl; }}void Person::threadProcess(LPVOID arg){ Person *p = (Person *)arg; p->spendMoney();}void Person::start(){ cout << "开始线程" << endl; //下面2种都可以 _beginthread(threadProcess, 0, this); //CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadProcess, this, 0, 0);}int main(){ Person *xiaoli = new Person(100); xiaoli->start(); //等待执行 Sleep(2000); cout << "按任意键退出程序" << endl; //等用户确认退出 _getch(); return 0;}

 

转载于:https://www.cnblogs.com/hellozhuzi/p/5711259.html

你可能感兴趣的文章
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>