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
|
||||
|
||||
|
||||
// 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;
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue