http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html#SCHEDULINGを参照
C++ で 2 つのスレッドを作成しようとしており、文字列をパラメーターとしてThread Start Routine
. パラメーターは、定義に従ってThread Start Routine
のみ型にすることができます。(void *)
int pthread_create(pthread_t * thread,
const pthread_attr_t * attr,
void * (*start_routine)(void *),
void *arg);
しかし、私は以下のエラーが発生します:
$ make
g++ -g -Wall Trial.cpp -o Trial
Trial.cpp: In function `int main()':
Trial.cpp:22: error: cannot convert `message1' from type `std::string' to type `void*'
Trial.cpp:23: error: cannot convert `message2' from type `std::string' to type `void*'
Makefile:2: recipe for target `Trial' failed
make: *** [Trial] Error 1
コードは
#include <iostream>
#include <pthread.h>
#include <string>
using namespace std;
void *print_message_function( void *ptr );
int main()
{
pthread_t thread1, thread2;
string message1 = "Thread 1";
string message2 = "Thread 2";
int iret1, iret2;
iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
cout << "Thread 1 returns: " << iret1 << endl;
cout << "Thread 2 returns: " << iret2 << endl;
return 0;
}
void *print_message_function( void *ptr )
{
cout << endl << ptr << endl;
//return 0;
}
パラメータstring
として渡す方法はありますか? (void *)
またはC style strings
、リンクの参照コードに示されているように、マルチスレッド パラメーターとしてのみ使用できます。