Re: cvs commit: src/lib/libthread_xu Makefile pthread.map src/li

看板DFBSD_commit作者時間21年前 (2005/02/03 08:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串22/24 (看更多)
Matthew Dillon wrote: >:This is fine to me, did you consider how to exit whole process not >:just a single thread ? right now, I am using _exit(), but it only >:exits current thread, other threads can not be shutdown. > > The problem with using _exit() to exit all threads is that there > is no way to notify the other threads of the event, and there are > cases where we might want that feature. I think what we want here > is a signal rather then a system call. > > Since we are already going to create a distinction in the signal handling > between vectored and shared signals, there is no reason why we couldn't > also create the concept of a 'broadcast' signal, that all threads get. > SIGKILL, SIGSTOP, SIGTSTP, SIGCONT... these would all be broadcast > signals by default. > > We would implement it via sigaction(). We would add a SA_BROADCAST > flag to handle broadcast signals, and we would also add a SA_VECTORED > flag to differentiate between shared signals and targeted signals. > > -Matt > Matthew Dillon > <dillon@backplane.com> > > > > There are problems, first, when debugging, debugger will catch the signal, second is important, exit() should save a value in kernel zoombie proc structure, so parent waitpid() on it can get the exit code, signal can not provide this feature. Linux has exit_group() which I think is used to implement exit(). FreeBSD introduced thr_exit and kse_exit to exit single thread, and leave orignal exit() to exit whole process. David Xu
文章代碼(AID): #120N4800 (DFBSD_commit)
討論串 (同標題文章)
完整討論串 (本文為第 22 之 24 篇):
文章代碼(AID): #120N4800 (DFBSD_commit)