1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Don't need pthread_detach() after pthread_join()

Spotted by Joona and verified with Valgrind.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2011-08-09 21:08:55 +01:00
parent 7d5b8fcf77
commit b69d9ee3f7
2 changed files with 12 additions and 15 deletions

View file

@ -2129,13 +2129,11 @@ split_point_start: // At split points actual search starts from here
} // namespace
// Little helper used by idle_loop() to check that all the slaves of a
// master thread have finished searching.
// Little helper used by idle_loop() to check that all the slave threads of a
// split point have finished searching.
static bool all_slaves_finished(SplitPoint* sp) {
assert(sp);
for (int i = 0; i < Threads.size(); i++)
if (sp->is_slave[i])
return false;

View file

@ -27,7 +27,7 @@ ThreadsManager Threads; // Global object definition
namespace { extern "C" {
// start_routine() is the C function which is called when a new thread
// is launched. It simply calls idle_loop() of the supplied threadID.
// is launched. It simply calls idle_loop() of the supplied thread.
// There are two versions of this function; one for POSIX threads and
// one for Windows threads.
@ -63,9 +63,8 @@ void Thread::wake_up() {
}
// cutoff_occurred() checks whether a beta cutoff has occurred in
// the thread's currently active split point, or in some ancestor of
// the current split point.
// cutoff_occurred() checks whether a beta cutoff has occurred in the current
// active split point, or in some ancestor of the split point.
bool Thread::cutoff_occurred() const {
@ -148,11 +147,6 @@ void ThreadsManager::set_size(int cnt) {
void ThreadsManager::init() {
// Threads will go to sleep as soon as created, only main thread is kept alive
set_size(1);
threads[0].state = Thread::SEARCHING;
threads[0].threadID = 0;
// Initialize threads lock, used when allocating slaves during splitting
lock_init(&threadsLock);
@ -166,7 +160,13 @@ void ThreadsManager::init() {
lock_init(&(threads[i].splitPoints[j].lock));
}
// Create and startup all the threads but the main that is already running
// Initialize main thread's associated data
threads[0].state = Thread::SEARCHING;
threads[0].threadID = 0;
set_size(1); // This makes all the threads but the main to go to sleep
// Create and launch all the threads but the main that is already running,
// threads will go immediately to sleep.
for (int i = 1; i < MAX_THREADS; i++)
{
threads[i].state = Thread::AVAILABLE;
@ -205,7 +205,6 @@ void ThreadsManager::exit() {
CloseHandle(threads[i].handle);
#else
pthread_join(threads[i].handle, NULL);
pthread_detach(threads[i].handle);
#endif
}