当前位置:  技术问答>linux和unix

pthread_create错误,怎么在C++类中定义线程函数指针

    来源: 互联网  发布时间:2016-06-22

    本文导语:  class Identity { public :  Identity();  void *Shown(void * arg);  void *RunExec(void * arg); private:   int a; }; Identity:: Identity() {  pthread_t pthread1,pthread2;  pthread_create(&pthread1, NULL,Shown, NULL);  pthread_create(&pthread2, NULL, RunExec, NULL)...

class Identity
{
public :
 Identity();
 void *Shown(void * arg);
 void *RunExec(void * arg);
private:
  int a;
};
Identity:: Identity()
{
 pthread_t pthread1,pthread2;
 pthread_create(&pthread1, NULL,Shown, NULL);
 pthread_create(&pthread2, NULL, RunExec, NULL);

 pthread_join(pthread1,NULL);
 pthread_join(pthread2,NULL);
}
void * Identity::Shown(void * arg)//->这里应该怎么定义,是否正确
{
a=1;
printf("pthread1--->a=%dn",a);
}
void *Identity::RunExec(void * arg)//->这里应该怎么定义,是否正确

{
  a=2;
  printf("pthread2--->a=%dn",a);
 pthread_exit(0);
}
int main(void)
{
Identity b;
return 0;
}
运行程序显示这两个子函数不匹配,以下是错误信息:
pthread.cpp:17: no matches converting function `Shown' to type `void*(*)(void*)
   '
pthread.cpp:9: candidates are: void* Identity::Shown(void*)
pthread.cpp:18: no matches converting function `RunExec' to type `
   void*(*)(void*)'
pthread.cpp:10: candidates are: void* Identity::RunExec(void*) 

好像怎么改都不对,难道只能在C语音里产生线程吗?(即怎么利用C++类产生线程?)

|

这种情况下,推荐的方法是,把线程函数要用的变量都放在一个结构里,把结构指针作为参数传给线程函数。
也就是pthread_create的第4个参数。

|

需要用静态成员函数。

#include 
using namespace std;

#include 


void *Bar(void *arg)
{
        cout 

    
 
 

您可能感兴趣的文章:

  • linux下进程和线程的区别(fork(),pthread_create())?
  • 用pthread_create建立线程后如何让线程运行的函数在create完了之后才实际运行 相当与windows下的CREATE_SUSPENDED ??
  • 请问:linux下如何将一个类的指针作为参数传给pthread_create创建的线程?
  • 请问:为什么我在守护进程里面用pthread_create来启动线程,经常会卡在那里阿?
  • pthread_create所创建的线程中的static变量
  • pthread_create创建线程问题
  • 为什么pthread_create创建线程出错.有完整代码,哪儿错了,大家给试试.
  • pthread_create()创建一千次以上线程失败!!为什么??请大家帮忙看一下
  • 求助:用pthread_create创建的线程最多为303个,可以更多吗?
  • linux下pthread_create创建线程问题
  • 创建线程函数pthread_create,在c/c++的用法。
  • [请教]pthread_create多线程问题
  • 求救:AIX 4.3上用pthread_create创建线程时居然随机地非法操作?
  • pthread_create 创建线程的时候如何让他先暂停,等我让他运行才运行?
  • 线程控制,但是pthread_create(&pid, NULL, &handle_roution, NULL)更本没走进去????????????
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个pthread_create 编译出错,是什么原因啊
  • Linux里的pthread_create会不会阻塞啊?
  • 关于pthread_create函数的问题
  • pthread_create的问题
  • pthread_create函数执行问题
  • 为什么pthread_create`编译通不过
  • 包含了#include <pthread.h>,为什么还有pthread_create错误?
  • 无法使用pthread_creat()函数的问题
  • 有关使用pthread_creat时的参数传递问题!!!
  • pthread_create 的问题 ,求救大家!!!
  • pthread_create函数编译时报错?
  • REDHAT7.2提示:undefined reference to "pthread_create"
  • pthread_create 为何报 Segmentation fault?
  • pthread_create编译错误
  • ★pthread_create 与 thr_create的区别是什么?★
  • 求助!!undefined reference to 'pthread_create'
  • 急!同一个c文件里vfork();pthread_create();两个函数,Makefile该怎么写?谢谢
  • 在LINUX GCC 编译错误 UnDefined reference to "pthread_creat"
  • No manual entry for pthread_create,我安了manpages-dev和glibc-doc
  • pthread_create函数返回值问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3