comparison src/os/unix/ngx_process_cycle.c @ 380:5ce6561246a5

nginx-0.0.7-2004-07-07-10:15:04 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 07 Jul 2004 06:15:04 +0000
parents 73688d5d7fc3
children 02a511569afb
comparison
equal deleted inserted replaced
379:73688d5d7fc3 380:5ce6561246a5
791 791
792 for (i = 0; i < ngx_threads_n; i++) { 792 for (i = 0; i < ngx_threads_n; i++) {
793 if (ngx_threads[i].state < NGX_THREAD_EXIT) { 793 if (ngx_threads[i].state < NGX_THREAD_EXIT) {
794 ngx_cond_signal(ngx_threads[i].cv); 794 ngx_cond_signal(ngx_threads[i].cv);
795 795
796 if (ngx_threads[i].cv->tid == -1) { 796 if (ngx_threads[i].cv->tid == (ngx_tid_t) -1) {
797 ngx_threads[i].state = NGX_THREAD_DONE; 797 ngx_threads[i].state = NGX_THREAD_DONE;
798 } else { 798 } else {
799 live = 1; 799 live = 1;
800 } 800 }
801 } 801 }
809 if (live == 0) { 809 if (live == 0) {
810 ngx_log_debug0(NGX_LOG_DEBUG_CORE, cycle->log, 0, 810 ngx_log_debug0(NGX_LOG_DEBUG_CORE, cycle->log, 0,
811 "all worker threads are joined"); 811 "all worker threads are joined");
812 812
813 /* STUB */ 813 /* STUB */
814 ngx_done_events(cycle);
814 ngx_mutex_destroy(ngx_event_timer_mutex); 815 ngx_mutex_destroy(ngx_event_timer_mutex);
815 ngx_mutex_destroy(ngx_posted_events_mutex); 816 ngx_mutex_destroy(ngx_posted_events_mutex);
816 817
817 return; 818 return;
818 } 819 }
827 ngx_thread_t *thr = data; 828 ngx_thread_t *thr = data;
828 829
829 sigset_t set; 830 sigset_t set;
830 ngx_err_t err; 831 ngx_err_t err;
831 ngx_tls_t *tls; 832 ngx_tls_t *tls;
833 ngx_cycle_t *cycle;
832 struct timeval tv; 834 struct timeval tv;
833 835
834 thr->cv->tid = ngx_thread_self(); 836 thr->cv->tid = ngx_thread_self();
837
838 cycle = (ngx_cycle_t *) ngx_cycle;
835 839
836 sigemptyset(&set); 840 sigemptyset(&set);
837 sigaddset(&set, ngx_signal_value(NGX_RECONFIGURE_SIGNAL)); 841 sigaddset(&set, ngx_signal_value(NGX_RECONFIGURE_SIGNAL));
838 sigaddset(&set, ngx_signal_value(NGX_REOPEN_SIGNAL)); 842 sigaddset(&set, ngx_signal_value(NGX_REOPEN_SIGNAL));
839 sigaddset(&set, ngx_signal_value(NGX_CHANGEBIN_SIGNAL)); 843 sigaddset(&set, ngx_signal_value(NGX_CHANGEBIN_SIGNAL));
840 844
841 err = ngx_thread_sigmask(SIG_BLOCK, &set, NULL); 845 err = ngx_thread_sigmask(SIG_BLOCK, &set, NULL);
842 if (err) { 846 if (err) {
843 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, err, 847 ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
844 ngx_thread_sigmask_n " failed"); 848 ngx_thread_sigmask_n " failed");
845 return (void *) 1; 849 return (void *) 1;
846 } 850 }
847 851
848 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ngx_cycle->log, ngx_errno, 852 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, ngx_errno,
849 "thread " TID_T_FMT " started", ngx_thread_self()); 853 "thread " TID_T_FMT " started", ngx_thread_self());
850 854
851 ngx_setthrtitle("worker thread"); 855 ngx_setthrtitle("worker thread");
852 856
853 if (!(tls = ngx_calloc(sizeof(ngx_tls_t), ngx_cycle->log))) { 857 if (!(tls = ngx_calloc(sizeof(ngx_tls_t), cycle->log))) {
854 return (void *) 1; 858 return (void *) 1;
855 } 859 }
856 860
857 err = ngx_thread_create_tls(); 861 err = ngx_thread_create_tls();
858 if (err != 0) { 862 if (err != 0) {
859 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, err, 863 ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
860 ngx_thread_create_tls_n " failed"); 864 ngx_thread_create_tls_n " failed");
861 return (void *) 1; 865 return (void *) 1;
862 } 866 }
863 867
864 ngx_thread_set_tls(tls); 868 ngx_thread_set_tls(tls);
877 if (ngx_terminate) { 881 if (ngx_terminate) {
878 thr->state = NGX_THREAD_EXIT; 882 thr->state = NGX_THREAD_EXIT;
879 883
880 ngx_mutex_unlock(ngx_posted_events_mutex); 884 ngx_mutex_unlock(ngx_posted_events_mutex);
881 885
882 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ngx_cycle->log, ngx_errno, 886 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, ngx_errno,
883 "thread %d is done", ngx_thread_self()); 887 "thread %d is done", ngx_thread_self());
884 888
885 return (void *) 0; 889 return (void *) 0;
886 } 890 }
887 891
888 thr->state = NGX_THREAD_BUSY; 892 thr->state = NGX_THREAD_BUSY;
889 893
890 if (ngx_event_thread_process_posted((ngx_cycle_t *) ngx_cycle) 894 if (ngx_event_thread_process_posted(cycle) == NGX_ERROR) {
891 == NGX_ERROR)
892 {
893 return (void *) 1; 895 return (void *) 1;
894 } 896 }
897
898 if (ngx_event_thread_process_posted(cycle) == NGX_ERROR) {
899 return (void *) 1;
900 }
901
902 if (ngx_process_changes(cycle, 1) == NGX_ERROR) {
903 return (void *) 1;
904 }
895 } 905 }
896 } 906 }
897 907
898 #endif 908 #endif