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:
parent
7d5b8fcf77
commit
b69d9ee3f7
2 changed files with 12 additions and 15 deletions
|
@ -2129,13 +2129,11 @@ split_point_start: // At split points actual search starts from here
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|
||||||
// Little helper used by idle_loop() to check that all the slaves of a
|
// Little helper used by idle_loop() to check that all the slave threads of a
|
||||||
// master thread have finished searching.
|
// split point have finished searching.
|
||||||
|
|
||||||
static bool all_slaves_finished(SplitPoint* sp) {
|
static bool all_slaves_finished(SplitPoint* sp) {
|
||||||
|
|
||||||
assert(sp);
|
|
||||||
|
|
||||||
for (int i = 0; i < Threads.size(); i++)
|
for (int i = 0; i < Threads.size(); i++)
|
||||||
if (sp->is_slave[i])
|
if (sp->is_slave[i])
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -27,7 +27,7 @@ ThreadsManager Threads; // Global object definition
|
||||||
namespace { extern "C" {
|
namespace { extern "C" {
|
||||||
|
|
||||||
// start_routine() is the C function which is called when a new thread
|
// 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
|
// There are two versions of this function; one for POSIX threads and
|
||||||
// one for Windows threads.
|
// one for Windows threads.
|
||||||
|
|
||||||
|
@ -63,9 +63,8 @@ void Thread::wake_up() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// cutoff_occurred() checks whether a beta cutoff has occurred in
|
// cutoff_occurred() checks whether a beta cutoff has occurred in the current
|
||||||
// the thread's currently active split point, or in some ancestor of
|
// active split point, or in some ancestor of the split point.
|
||||||
// the current split point.
|
|
||||||
|
|
||||||
bool Thread::cutoff_occurred() const {
|
bool Thread::cutoff_occurred() const {
|
||||||
|
|
||||||
|
@ -148,11 +147,6 @@ void ThreadsManager::set_size(int cnt) {
|
||||||
|
|
||||||
void ThreadsManager::init() {
|
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
|
// Initialize threads lock, used when allocating slaves during splitting
|
||||||
lock_init(&threadsLock);
|
lock_init(&threadsLock);
|
||||||
|
|
||||||
|
@ -166,7 +160,13 @@ void ThreadsManager::init() {
|
||||||
lock_init(&(threads[i].splitPoints[j].lock));
|
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++)
|
for (int i = 1; i < MAX_THREADS; i++)
|
||||||
{
|
{
|
||||||
threads[i].state = Thread::AVAILABLE;
|
threads[i].state = Thread::AVAILABLE;
|
||||||
|
@ -205,7 +205,6 @@ void ThreadsManager::exit() {
|
||||||
CloseHandle(threads[i].handle);
|
CloseHandle(threads[i].handle);
|
||||||
#else
|
#else
|
||||||
pthread_join(threads[i].handle, NULL);
|
pthread_join(threads[i].handle, NULL);
|
||||||
pthread_detach(threads[i].handle);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue