mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
This closes patch:
[ 960406 ] unblock signals in threads although the changes do not correspond exactly to any patch attached to that report. Non-main threads no longer have all signals masked. A different interface to readline is used. The handling of signals inside calls to PyOS_Readline is now rather different. These changes are all a bit scary! Review and cross-platform testing much appreciated.
This commit is contained in:
parent
e3c330b42a
commit
30ea2f223f
10 changed files with 1576 additions and 3095 deletions
|
@ -119,7 +119,6 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
|
|||
{
|
||||
pthread_t th;
|
||||
int status;
|
||||
sigset_t oldmask, newmask;
|
||||
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
|
||||
pthread_attr_t attrs;
|
||||
#endif
|
||||
|
@ -137,13 +136,6 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
|
|||
pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
|
||||
#endif
|
||||
|
||||
/* Mask all signals in the current thread before creating the new
|
||||
* thread. This causes the new thread to start with all signals
|
||||
* blocked.
|
||||
*/
|
||||
sigfillset(&newmask);
|
||||
SET_THREAD_SIGMASK(SIG_BLOCK, &newmask, &oldmask);
|
||||
|
||||
status = pthread_create(&th,
|
||||
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
|
||||
&attrs,
|
||||
|
@ -154,9 +146,6 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
|
|||
(void *)arg
|
||||
);
|
||||
|
||||
/* Restore signal mask for original thread */
|
||||
SET_THREAD_SIGMASK(SIG_SETMASK, &oldmask, NULL);
|
||||
|
||||
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
|
||||
pthread_attr_destroy(&attrs);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue