mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-06 18:44:13 +08:00
mdbx: more yields as workaround for pthreads bug.
Backport 719ecd55cf1d0ea7d6771248b3936f056bc49a47 from https://github.com/ReOpen/ReOpenLDAP Change-Id: I6bead57782a29fca5352055db6afee02ad1ee38b
This commit is contained in:
parent
36bc576036
commit
4507c1c6bb
7
mdb.c
7
mdb.c
@ -4672,7 +4672,7 @@ void mdbx_pthread_crutch_dtor(void)
|
||||
* деструкторы уже могли начать выполняться.
|
||||
* Уступая квант времени сразу после удаления ключа
|
||||
* мы даем им шанс завершиться. */
|
||||
pthread_yield();
|
||||
sched_yield(); sched_yield(); sched_yield();
|
||||
|
||||
mdbx_rthc_lock();
|
||||
pid_t pid = getpid();
|
||||
@ -4691,11 +4691,12 @@ void mdbx_pthread_crutch_dtor(void)
|
||||
* Поэтому на каждой итерации уступаем квант времени,
|
||||
* в надежде что деструкторы успеют отработать. */
|
||||
mdbx_rthc_unlock();
|
||||
pthread_yield();
|
||||
sched_yield(); sched_yield(); sched_yield();
|
||||
mdbx_rthc_lock();
|
||||
}
|
||||
mdbx_rthc_unlock();
|
||||
pthread_yield();
|
||||
|
||||
sched_yield(); sched_yield(); sched_yield();
|
||||
}
|
||||
#endif /* MDBX_USE_THREAD_ATEXIT */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user