`
linkyou66
  • 浏览: 226911 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

linux C++ 类成员函数中创建线程,且能访问类中其他成员变量

阅读更多
<p>最近刚开始玩C++,遇到一些基础问题,下面就是其中之一,将源代码公布一下方便大家查找。</p>
<p>linux C++ 类成员函数中创建线程,且能访问类中其他成员变量.</p>
<p>重点:将线程执行函数声明为非类成员函数,通过参数*arg 将this指针传入线程函数体中。</p>
<p></p>
<p><strong>test.h</strong>
</p>
<p></p>
<p>#ifndef TEST_H<br>
#define TEST_H<br><br>
class test<br>
{<br>
public:<br>
test();<br>
~test();<br>
public:<br>
int p;<br>
void sayHello(int r);<br>
void createThread();<br>
private:<br>
int q;<br>
};<br>
#endif</p>
<p></p>
<p><strong>test.cpp</strong>
</p>
<p></p>
<p>#include "test.h"<br>
#include &lt;string&gt;<br>
#include&lt;pthread.h&gt;<br>
test::test()<br>
{}<br>
test::~test()<br>
{}<br><br>
void *threadFunction(void *arg)<br>
{<br>
test *obj = (test *)arg;<br>
printf("get p:%d",obj-&gt;p);<br>
obj-&gt;sayHello(12);<br>
for(;;);<br>
}<br><br>
void test::sayHello(int r)<br>
{<br>
printf("Hello world %d!/n", r);<br>
}<br>
void test::createThread()<br>
{<br>
p = 1;<br>
q = 2;<br>
pthread_t threadID;<br>
pthread_create(&amp;threadID, NULL, threadFunction, this);<br>
getchar();<br>
}<br>
~</p>
<p><strong>main.cpp</strong></p>
<p></p>
<p>#include "test.h"<br>
#include &lt;string&gt;<br>
#include &lt;iostream.h&gt;<br>
#include &lt;map&gt;<br><br>
using namespace std;<br>
int main()<br>
{<br>
test t;<br>
t.createThread();<br>
return 0;<br>
}<br>
~</p>
分享到:
评论

相关推荐

    Visual C++开发经验技巧宝典(第1章)

    0056 访问其他类的私有成员函数 21 0057 如何定义友员类 22 1.7 多态 23 0058 纯虚函数的使用 23 0059 覆盖基类的成员函数 23 0060 如何应用多重继承 24 0061 如何利用虚函数实现动态绑定 25 0062 ...

    《C++编程艺术》教程+代码

    2.2 在C++中创建垃圾回收器 7 2.3 选择垃圾回收的算法 8 2.3.1 引用计数 9 2.3.2 标记并清除 9 2.3.3 复制 9 2.3.4 采用哪种算法 9 2.3.5 实现垃圾回收器 10 2.3.6 是否使用多线程 10 2.3.7 何时回收垃圾 10 2.3.8 ...

    C/C++笔试题(附答案,华为面试题系列)

    2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。...

    static 用法

    在C中static有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。, 但为了限制全局变量/函数的作用域, 函数或变量前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的...

    Effective C++ 中文版

    条款15:在资源管理类中提供对原始资源的访问 条款16:成对使用new和delete对象置入智能指针 条款17:以独立语句将newed对象置入智能指针 4.设计与声明 条款18:让接口容易被正确使用,不易被误用 条款19:设计...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

    所以,用1.x版开发的服务端或客户端代码需要进行修改以适应2.x版中函数的变化:在2.x版中,所有的gSOAP函数都增加了一个参  数用来保存一个gSOAP运行环境实例。这个参数包括了文件描述,表,缓冲,标志位等,它在...

    77G 22套C语言 C++ 数据结构 程序设计视频课程合集 C丨C++相关学习视频全套视频教程

    049.MFC_创建线程.mp4 050.MFC_线程控制.mp4 051.MFC_线程同步.mp4 052.MFC_线程同步方法.mp4 053.MFC_缩放位图.mp4 054.MFC_画刷.mp4 055.MFC_GDIPlus.mp4 056.MFC_使用GDIPlus打开和保存图片.mp4 057.MFC...

    JNI完全技术手册 带完整书签

    chap 14:当JNI遇到多线程--java对象如何被C++中的多个线程访问?. 97 chap 15:JNI在多线程中的应用... 101 chap 16:JNI限制(多线程)... 105 chap 17:使用 Java Native Interface 的最佳实践... 106 1....

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版 原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发...

    在一小时内学会 C#(txt版本)

    现在思考当你要从其他命名空间的类中访问 HelloWorld 类。 复制内容到剪贴板 代码: using System; namespace AnotherNameSpace { class AnotherClass { public void Func() { Console.WriteLine ("Hello World...

    Linux高性能服务器编程

    14.1 Linux线程概述 14.1.1 线程模型 14.1.2 Linux线程库 14.2 创建线程和结束线程 14.3 线程属性 14.4 POSIX信号量 14.5 互斥锁 14.5.1 互斥锁基础API 14.5.2 互斥锁属性 14.5.3 死锁举例 14.6 条件变量 ...

    Visual.C#2010从入门到精通

    13.2.2 多文档框架类中的常用函数 258 13.3 文档 260 13.3.1 对视图的管理 260 13.3.2 新建或打开文档 262 13.3.3 文档的保存和关闭 264 13.4 视图 264 13.4.1 CView类 265 13.4.2 视图对象的创建 267 13.5 分割式...

    传智播客扫地僧视频讲义源码

    08_继承中的同名成员变量和同名成员函数 09_继承的static关键字 10_多继承的基本语法 11_二义性和虚继承解决方案 12_中午课程回顾 13_多继承原理抛砖_传智扫地僧 14_多态思想引言 15_类型兼容性原则遇上还是函数重写...

    VC++常用的共用函数100多页

    问:DLL中的模板成员函数? 79 问:CFormView中的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage中的BroadcastSystemMessage如何处理? 80 问:CListCtrl中选择变化时如何获得...

    c++ 面试题 总结

    私有变量不能直接访问。 -------------------------------------------------------------------------- 2.输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码) #include using namespace std; void ...

    《Intel C++ 编译器Windows版》(Intel.C.Plus.Plus.Compiler.v10.0.026)

    这个优化器的分析能力还可以对代码弱点和代码错误给出反馈,诸如未初始化的变量或者OpenMP API issues这些严格依赖编译器前端的编译器不能检测到的状况。 * Profile-guided Optimization (PGO) 通过减少指令缓存...

Global site tag (gtag.js) - Google Analytics