C++におけるスレッド制御に関して
C++初心者です。
スレッド制御の勉強をしておりますが、
なかなかうまくいきません。
下記のソースのようにスレッド生成をしておりますが、
スレッド用メソッドには、*を付けて使用するしか方法はないのでしょうか?
pthread_createに渡す第3パラメータをメソッド名のみにして、呼ばれ元のメソッドの戻り値をvoid* ではなく、void のみで実施したいと思っておりますが、方法がわかりません。
大変申し訳ございませんが、ご教授よろしくお願いいたします。
##############################################################
# pthread_test.cc
##############################################################
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
/*
* スレッドパラメータ格納用
*/
typedef struct {
char printVal;
int interval;
} ThreadParamT;
// スレッドイニシャル関数
void *ThreadTest(void *arg)
{
ThreadParamT *thread_test_param =(ThreadParamT*)arg;
while(1) {
fprintf(stderr,"%c", thread_test_param->printVal);
sleep(thread_test_param->interval);
}
return NULL;
}
int main(int argc,char *argv[])
{
int status;
// スレッドのパラメータ
pthread_t thread_test;
ThreadParamT thread_test_param;
thread_test_param.printVal = 'a';
thread_test_param.interval = 1;
// スレッドを生成
status=pthread_create(&thread_test, NULL, ThreadTest, &thread_test_param);
if(status!=0){
fprintf(stderr,"ERR! OUT!\n");
exit(1);
}
// 10s間待つ
sleep(10);
fprintf(stderr, "\n");
return 0;
}
##############################################################
お礼
回答ありがとうございます。