Mercurial > hg > nginx
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 |