类的成员变量作为pthread_create的参数
2015-09-22 17:23
204 查看
方式一:使用this指针
方式二:直接传递。
实例:
“paraData.h”
testThread.h:
testThread.cpp:
main.cpp
注:pthread_create的第三个参数,如果有全局函数和类成员函数重名(testPrint),默认调用类成员函数。
方式二:直接传递。
实例:
“paraData.h”
#include <string> #include <stdio.h> class paraData { public: paraData() : m_strData("test abc!"), m_iData(5) {} ~paraData(){} void show() { printf("str:%s\n", m_strData.c_str()); printf("int:%d\n", m_iData); } private: std::string m_strData; int m_iData; };
testThread.h:
#include "paraData.h" #include <pthread.h> class testThread { public: testThread(){} ~testThread(){} void Run(); static void* testPrint(void*); void show(); private: pthread_t m_pid; paraData m_pData; };
testThread.cpp:
#include "testThread.h" void* testPrint(void* para) { printf("cccccc\n"); return 0; } void testThread::Run() { int ret = 0; //ret = pthread_create(&m_pid, NULL, testPrint, this); ret = pthread_create(&m_pid, NULL, testPrint, (void*)&m_pData); if(ret == -1) { printf("create occur error\n"); } pthread_join(m_pid, NULL); } void* testThread::testPrint(void* arg) { paraData* pdata = (paraData*) arg; pdata->show(); //testThread* pthis = (testThread*) arg; //pthis->show(); return 0; } void testThread::show() { m_pData.show(); }
main.cpp
#include "testThread.h" int main() { testThread tt; tt.Run(); return 0; }
注:pthread_create的第三个参数,如果有全局函数和类成员函数重名(testPrint),默认调用类成员函数。
相关文章推荐
- Node.js开发框架Express4.x
- RSA算法原理(一)
- RSA算法原理(二)
- chattr实现文件不可删除
- HTML页面中引入日历插件
- 两个Integer比较大小需要注意的误区
- Message 1070 not found; No message file for product=network, facility=TNSTNS-12546: Message 12546 no
- 思科模拟器 简单网络连接操作
- Windows7下安装MongoDB
- 杰出人士的七种共性之5-独木求林
- ksh 简单变量
- QT5.3连接mysql数据库
- codeforces 294B B. Shaass and Bookshelf(dp)
- java eclipse打jar包和执行jar中的main函数
- encodeURI来解决URL传递时的中文问题
- 停止monkey运行
- 黑马程序员——IOS学习笔记(C语言字符串和数组)
- Lua中关于求模与求余的区别介绍
- Android手势库
- Extjs操作Dom