gcc (GCC) 4.6.3
c89
こんにちは、
これがメインによって作成されたワーカー/バックグラウンド スレッドを処理する最良の方法であるかどうか疑問に思っていますか?
私はこれを正しくやっていますか?マルチスレッドプログラムを実行したのはこれが初めてです。スレッドを追加するにはこれを拡張する必要があるため、正しい軌道に乗っていることを確認したいだけです。
メッセージを送信するためのスレッドと、メッセージを受信するためのスレッドがあります。
ご提案いただきありがとうございます。
int main(void)
{
pthread_t thread_send;
pthread_t thread_recv;
int status = TRUE;
/* Start thread that will send a message */
if(pthread_create(&thread_send, NULL, thread_send_fd, NULL) == -1) {
fprintf(stderr, "Failed to create thread, reason [ %s ]",
strerror(errno));
status = FALSE;
}
if(status != FALSE) {
/* Thread send started ok - join with the main thread when its work is done */
pthread_join(thread_send, NULL);
/* Start thread to receive messages */
if(pthread_create(&thread_recv, NULL, thread_receive_fd, NULL) == -1) {
fprintf(stderr, "Failed to create thread for receiving, reason [ %s ]",
strerror(errno));
status = FALSE;
/* Cancel the thread send if it is still running as the thread receive failed to start */
if(pthread_cancel(thread_send) != 0) {
fprintf(stderr, "Failed to cancel thread for sending, reason [ %s ]",
strerror(errno));
}
}
}
if(status != FALSE) {
/* Thread receive started ok - join with the main thread when its work is done */
pthread_join(thread_recv, NULL);
}
return 0;
}
メッセージを送信するワーカー/バックグラウンド スレッドの例 (例のみ)
void *thread_send_fd()
{
/* Send the messages when done exit */
pthread_exit(NULL);
}