Это структура C, Plain Old Data, поэтому нет деструктора, который бы вводил побочные эффекты, когда он выходит из области видимости.Единственное следствие потери области видимости - это то, что вы больше не можете ее видеть.
Я знаю, что у вас вопрос C, но многие реализации потоков решают проблему с помощью чего-то подобного:
class Thread {
pthread_t handle;
static void * start (void * self) {
static_cast <Thread *> (self) -> run ();
}
protected: void run () = 0;
public: void start () {
pthread_create (&handle, NULL, start, this);
}
~ Thread () {
pthread_join (&handle, NULL);
}
};
Вы можете сделать что-то аналогичное C, arg
- это указатель на malloc
ed структуру, которая содержит дескриптор потока;функция потока frees
это по окончании.