以下の私の擬似コードを参照してください。コードコメントは私の問題を説明するはずです。私はCのpthreadとリンクリストの両方に慣れていないので、少し深いところに飛び込みました。str
関数にoutの値を出力する必要がありthread_work
ます。コードのシーケンシャルビットは問題ありませんが、各スレッドが機能する場合、の値を出力できませんstr
。
// linked list definition
struct linked_list {
char *str;
struct linked_list *next;
};
// linked list initiation
struct linked_list *root;
struct linked_list *next_info;
root = malloc( sizeof( struct linked_list ) );
// main code
some loop {
next_node->str = str;
printf( "%s\n", next_node ); // PRINTS FINE
pthread_t thread;
rc = pthread_create( &thread, NULL, thread_work, (void *) &next_node );
next_node->next = malloc( sizeof( struct linked_list ) );
next_node = next_node->next;
}
// code executed by each thread
void *thread_work( void *thread_arg ) {
struct linked_list *ll;
ll = ( struct linked_list * )thread_arg;
printf( "%s\n", ll->str ); // PRINTS SOME MESS (��E#)
}
私の実際のコードには、のメンバーがさらにいくつかありますlinked_list
struct
。
どうもありがとう。