| 
						
						
						
					 | 
				
				 | 
				
					@ -1,5 +1,8 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <thread> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "global_utils.h" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					const static uint32_t DEFAULT_THREAD_NUM = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					range_split_t range_split(uint64_t start, uint64_t end, uint64_t size) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    uint64_t rear = end - (end - start) % size; // (rear - start) % size == 0
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    range_split_t ranges; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -13,8 +16,6 @@ range_split_t range_split(uint64_t start, uint64_t end, uint64_t size) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					uint32_t thread_num() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // TODO: use CPU core number
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return 16; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto num = std::thread::hardware_concurrency(); // CPU core number
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return (num == 0) ? DEFAULT_THREAD_NUM : num; // fetch failed -> use default number
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					
  |