mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-23 04:08:20 +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();
|
mdbx_rthc_lock();
|
||||||
pid_t pid = getpid();
|
pid_t pid = getpid();
|
||||||
@ -4691,11 +4691,12 @@ void mdbx_pthread_crutch_dtor(void)
|
|||||||
* Поэтому на каждой итерации уступаем квант времени,
|
* Поэтому на каждой итерации уступаем квант времени,
|
||||||
* в надежде что деструкторы успеют отработать. */
|
* в надежде что деструкторы успеют отработать. */
|
||||||
mdbx_rthc_unlock();
|
mdbx_rthc_unlock();
|
||||||
pthread_yield();
|
sched_yield(); sched_yield(); sched_yield();
|
||||||
mdbx_rthc_lock();
|
mdbx_rthc_lock();
|
||||||
}
|
}
|
||||||
mdbx_rthc_unlock();
|
mdbx_rthc_unlock();
|
||||||
pthread_yield();
|
|
||||||
|
sched_yield(); sched_yield(); sched_yield();
|
||||||
}
|
}
|
||||||
#endif /* MDBX_USE_THREAD_ATEXIT */
|
#endif /* MDBX_USE_THREAD_ATEXIT */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user