Khi tôi gọi pthread_exit
từ main
, chương trình không bao giờ bị chấm dứt. Tôi dự kiến chương trình sẽ kết thúc, vì tôi đã thoát khỏi chuỗi chỉ của chương trình, nhưng nó không hoạt động. Có vẻ như treo.Bạn có thể gọi pthread_exit từ chính không?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main(int argc, char *argv[])
{
printf("-one-\n");
pthread_exit(NULL);
printf("-two-\n");
}
Process Explorer cho thấy (chỉ) chủ đề là trong Wait:DelayExecution
nhà nước.
Theo pthread_exit
tài liệu:
Quá trình này sẽ thoát ra với một lối ra trạng thái 0 sau khi thread cuối cùng đã bị chấm dứt. Hành vi sẽ là như thể triển khai được gọi là thoát() với đối số bằng không tại thời điểm kết thúc là .
Tôi đang sử dụng Dev-C++ v4.9.9.2 và pthreads-win32 v2.8.0.0 (liên kết chống lại libpthreadGC2.a
).
Thư viện có vẻ là OK (ví dụ: gọi pthread_self
hoặc pthread_create
từ main
hoạt động tốt).
Có lý do nào cho những gì tôi không được gọi là pthread_exit
từ main
?
Tại sao bạn không 'trả về 0;' thay vì 'pthread_exit (NULL);'? –
Tôi biết tôi _could_ 'return' hoặc' exit'. Tôi chỉ muốn biết nếu nó là hợp pháp để chấm dứt thread chính bằng cách gọi 'pthread_exit'. – user429788
Trả về từ chính() là rất khác nhau để chạy pthread_exit(). Sau đó sẽ cho phần còn lại của chủ đề còn sống để kết thúc và sau đó thoát ra với giá trị trả về 0. Các cựu sẽ chấm dứt tất cả mọi thứ ngay lập tức. –