mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* thread_pthread.c (gvl_release, gvl_init): suppress warnings.
* vm_core.h (rb_vm_gvl_destroy): add prototype. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									079545cd8c
								
							
						
					
					
						commit
						925da00b02
					
				
					 3 changed files with 12 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,9 @@
 | 
			
		|||
Sun Nov 28 14:48:24 2010  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* thread_pthread.c (gvl_release, gvl_init): suppress warnings.
 | 
			
		||||
 | 
			
		||||
	* vm_core.h (rb_vm_gvl_destroy): add prototype.
 | 
			
		||||
 | 
			
		||||
Sun Nov 28 14:46:24 2010  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* thread_pthread.c (gvl_reinit): register atfork hander only in
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +21,7 @@ Sun Nov 28 12:23:57 2010  Koichi Sasada  <ko1@atdot.net>
 | 
			
		|||
	      this causes some issues such as priority inversion and so on.)
 | 
			
		||||
	      This impl. prevents spin-loop (*1) caused on SMP environemnts.
 | 
			
		||||
	  *1: Only one Ruby thread acqures GVL again and again.
 | 
			
		||||
	      Bug #2359 [ruby-core:26694] 
 | 
			
		||||
	      Bug #2359 [ruby-core:26694]
 | 
			
		||||
 | 
			
		||||
	* thread_win32.c, thread_win32.h: Using simple lock
 | 
			
		||||
	  not by CRITICAL_SECTION but by Mutex.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ static void native_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
 | 
			
		|||
static void native_cond_initialize(pthread_cond_t *cond);
 | 
			
		||||
static void native_cond_destroy(pthread_cond_t *cond);
 | 
			
		||||
 | 
			
		||||
static void native_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)); 
 | 
			
		||||
static void native_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));
 | 
			
		||||
 | 
			
		||||
#define native_mutex_reinitialize_atfork(lock) (\
 | 
			
		||||
	native_mutex_unlock(lock), \
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +50,7 @@ gvl_show_waiting_threads(rb_vm_t *vm)
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !GVL_SIMPLE_LOCK
 | 
			
		||||
static void
 | 
			
		||||
gvl_waiting_push(rb_vm_t *vm, rb_thread_t *th)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -73,6 +74,7 @@ gvl_waiting_shift(rb_vm_t *vm, rb_thread_t *th)
 | 
			
		|||
    vm->gvl.waiting_threads = vm->gvl.waiting_threads->native_thread_data.gvl_next;
 | 
			
		||||
    vm->gvl.waiting--;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
gvl_acquire(rb_vm_t *vm, rb_thread_t *th)
 | 
			
		||||
| 
						 | 
				
			
			@ -114,7 +116,7 @@ gvl_release(rb_vm_t *vm)
 | 
			
		|||
	native_cond_signal(&th->native_thread_data.gvl_cond);
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
	if (GVL_DEBUG) fprintf(stderr, "gvl release (%p): wakeup: %p\n", GET_THREAD(), 0);
 | 
			
		||||
	if (GVL_DEBUG) fprintf(stderr, "gvl release (%p): wakeup: %p\n", GET_THREAD(), NULL);
 | 
			
		||||
	/* do nothing */
 | 
			
		||||
    }
 | 
			
		||||
    vm->gvl.acquired = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -639,6 +639,7 @@ VALUE rb_vm_invoke_proc(rb_thread_t *th, rb_proc_t *proc, VALUE self,
 | 
			
		|||
			int argc, const VALUE *argv, const rb_block_t *blockptr);
 | 
			
		||||
VALUE rb_vm_make_proc(rb_thread_t *th, const rb_block_t *block, VALUE klass);
 | 
			
		||||
VALUE rb_vm_make_env_object(rb_thread_t *th, rb_control_frame_t *cfp);
 | 
			
		||||
void rb_vm_gvl_destroy(rb_vm_t *vm);
 | 
			
		||||
 | 
			
		||||
void rb_thread_start_timer_thread(void);
 | 
			
		||||
void rb_thread_stop_timer_thread(void);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue