Posix iş parçacığı kullanırken, ana iş parçacığının, çalışan iş parçacıklarının neden olduğu hatalardan (örneğin, işaretlenmemiş boş göstergeler, sıfıra bölme, vb.) "Korunmasını" sağlamanın bir yolu vardır. "Çalışan iş parçacığı" ile pthread_create() tarafından oluşturulan bir posix iş parçacığı kastediyorum.Ana parçacığın iş parçacığındaki hatalardan korunması
Maalesef istisnalar kullanamaz - yani hayır "catch" vb İşte
benim test programı (C++): Yukarıdaki örnektevoid* workerThreadFunc(void* threadId) {
int* a = NULL;
*a = 5; //Error (segmentation fault)
pthread_exit(NULL);
}
int main() {
cout << "Main thread start" << endl;
pthread_t workerThread;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
pthread_create(&workerThread, &attr, workerThreadFunc, (void*)0);
pthread_join(workerThread, NULL);
cout << "Main thread end" << endl;
}
, workerThread kaynaklanan hata olacak tüm programı sonlandırmak. Ancak, ana iş parçacığının bu hataya rağmen çalışmaya devam etmesini istiyorum. Bunu başarmak mümkün mü? (Yani "hiçbir istisna" egemenliği altında düşebilir rağmen) sistem varsayarsak
'Ne yazık ki, istisnaları kullanamıyoruz - yani "yakalama" vb. - tabi ki yapabilirsin. İstisna, onu oluşturan parçacığa atılacaktır. –
Diğer thread'ları istisnalar/hatalardan 'korumak' için en iyi yol, onları düzeltmek ya da algılanmamak ve ele alınmamak/işlemden geçirilmek/saklamaktır. –
Not - Yukarıdaki örnekte, henüz oluşturulmamış bir konuya katılmaya çalışıyorsunuz. –