i haven't seen any potential deadlock scenarios in your code, but this looks dangerous

Code:
void 	*ThreadAttempt::thread_init(void *arg){ ((ThreadAttempt *) arg)->thread_function(); }
defininte segfault potential there.