mirror of
				https://github.com/isar/libmdbx.git
				synced 2025-10-31 03:29:01 +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:
		
							
								
								
									
										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 */ | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user