类成员函数作为pthread_create函数参数 近⽇需要将线程池封装成C++类,类名为Threadpool。在类的成员函数exec_task中调⽤pthread_create去启动线程执⾏例程 thread_rounter。编译之后报错如下:spfs_threadpool.cpp: In member function ‘int Threadpool::exec_task(task*)’:spfs_threadpool.cpp:174: error: ...
pthread_exit(NULL); return NULL; } int main() { pthread_t some_thread; struct arg_struct args; args.arg1 = 5; args.arg2 = 7; if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) { printf("Uh-oh!\n"); return -1; } return pthread_join(some...
{ int ret = pthread_create(&m_tid_sleep,NULL,sleepFun,this); if(ret != 0) { printf("Create Thread Fail.\n"); return false; } return true; } //.h void* sleepFun(void* arg); 原因:线程方法必须是静态方法,你如果写在类里,不能是成员函数,需要加static 改为://.h static void* sle...
pthread_create方法第三个参数只能是C函数指针或者类到静态函数指针。 下面记录一下解决方法 1include <stdio.h>2#include <pthread.h>3#include <unistd.h>45classThread{6public:7Thread(intnum =5):_num(num){ }89staticvoid*work(void*args){//静态函数有访问函数, 变量限制, 这里直接传入类指针变量10T...
SetPositionY(rand()%15+2); while (1) //游戏循环 { //问题在此 pth1 = pthread_create(&threads, NULL, Controller, (void*)Player &player); } //参数该如何调用? system("pause"); return 0; } 3.报错如下 E:\Workspace\C\Game test\problem.cpp: In function 'int main()': E:\...
在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static ! 在C语言中,我们使用pthread_create创建线程,线程函数是一个全局函数,所以在C++中,创建线程时,也应该使用一个全局函数。static定义的类的成员函数就是一个全局函数。
#include<stdio.h>#include<stdlib.h>#include<pthread.h>//线程处理函数void*threaddeal(void*arg){printf("%d\n",*((int*)arg));//传递线程的参数pthread_exit(NULL); }intmain(intargc,char*argv[]){inti;pthread_tthreadid;for(i=0;i<10;i++) ...
1.通过类的静态对象来调用。比如单体模式中,静态函数可以通过类的全局唯一实例来访问动态成员函数。 2.将类的对象作为参数传递给该静态函数,然后在静态函数中引用这个对象,并调用其动态方法。 代码清单15-3使用…
(1)线程函数只有一个参数的情况:直接定义一个变量通过应用传给线程函数。 #include<iostream>#include<pthread.h>usingnamespacestd;pthread_t thread;voidfn(void*arg){inti=*(int*)arg;cout<<"i = "<<i<<endl;return((void*)0);}intmain(){interr1;inti=10;err1=pthread_create(&thread,NULL,fn,&...