@@ -7,10 +7,11 @@ mod decl {
77 PyObjectRef , PyResult , VirtualMachine , builtins:: PyFloat , frame:: Frame ,
88 function:: OptionalArg , py_io:: Write ,
99 } ;
10+ use parking_lot:: { Condvar , Mutex } ;
1011 #[ cfg( any( unix, windows) ) ]
1112 use rustpython_common:: os:: { get_errno, set_errno} ;
13+ use std:: sync:: Arc ;
1214 use std:: sync:: atomic:: { AtomicBool , AtomicI32 , Ordering } ;
13- use std:: sync:: { Arc , Condvar , Mutex } ;
1415 use std:: thread;
1516 use std:: time:: Duration ;
1617
@@ -692,13 +693,12 @@ mod decl {
692693
693694 loop {
694695 // Hold lock across wait_timeout to avoid race condition
695- let mut guard = lock. lock ( ) . unwrap ( ) ;
696+ let mut guard = lock. lock ( ) ;
696697 if guard. cancel {
697698 return ;
698699 }
699700 let timeout = Duration :: from_micros ( guard. timeout_us ) ;
700- let result = cvar. wait_timeout ( guard, timeout) . unwrap ( ) ;
701- guard = result. 0 ;
701+ cvar. wait_for ( & mut guard, timeout) ;
702702
703703 // Check if cancelled after wait
704704 if guard. cancel {
@@ -818,7 +818,7 @@ mod decl {
818818
819819 // Store the state
820820 {
821- let mut watchdog = WATCHDOG . lock ( ) . unwrap ( ) ;
821+ let mut watchdog = WATCHDOG . lock ( ) ;
822822 * watchdog = Some ( Arc :: clone ( & state) ) ;
823823 }
824824
@@ -833,14 +833,14 @@ mod decl {
833833 #[ pyfunction]
834834 fn cancel_dump_traceback_later ( ) {
835835 let state = {
836- let mut watchdog = WATCHDOG . lock ( ) . unwrap ( ) ;
836+ let mut watchdog = WATCHDOG . lock ( ) ;
837837 watchdog. take ( )
838838 } ;
839839
840840 if let Some ( state) = state {
841841 let ( lock, cvar) = & * state;
842842 {
843- let mut guard = lock. lock ( ) . unwrap ( ) ;
843+ let mut guard = lock. lock ( ) ;
844844 guard. cancel = true ;
845845 }
846846 cvar. notify_all ( ) ;
@@ -849,7 +849,7 @@ mod decl {
849849
850850 #[ cfg( unix) ]
851851 mod user_signals {
852- use std :: sync :: Mutex ;
852+ use parking_lot :: Mutex ;
853853
854854 const NSIG : usize = 64 ;
855855
@@ -878,12 +878,12 @@ mod decl {
878878 static USER_SIGNALS : Mutex < Option < Vec < UserSignal > > > = Mutex :: new ( None ) ;
879879
880880 pub fn get_user_signal ( signum : usize ) -> Option < UserSignal > {
881- let guard = USER_SIGNALS . lock ( ) . unwrap ( ) ;
881+ let guard = USER_SIGNALS . lock ( ) ;
882882 guard. as_ref ( ) . and_then ( |v| v. get ( signum) . cloned ( ) )
883883 }
884884
885885 pub fn set_user_signal ( signum : usize , signal : UserSignal ) {
886- let mut guard = USER_SIGNALS . lock ( ) . unwrap ( ) ;
886+ let mut guard = USER_SIGNALS . lock ( ) ;
887887 if guard. is_none ( ) {
888888 * guard = Some ( vec ! [ UserSignal :: default ( ) ; NSIG ] ) ;
889889 }
@@ -895,7 +895,7 @@ mod decl {
895895 }
896896
897897 pub fn clear_user_signal ( signum : usize ) -> Option < UserSignal > {
898- let mut guard = USER_SIGNALS . lock ( ) . unwrap ( ) ;
898+ let mut guard = USER_SIGNALS . lock ( ) ;
899899 if let Some ( ref mut v) = * guard
900900 && signum < v. len ( )
901901 && v[ signum] . enabled
@@ -908,7 +908,7 @@ mod decl {
908908 }
909909
910910 pub fn is_enabled ( signum : usize ) -> bool {
911- let guard = USER_SIGNALS . lock ( ) . unwrap ( ) ;
911+ let guard = USER_SIGNALS . lock ( ) ;
912912 guard
913913 . as_ref ( )
914914 . and_then ( |v| v. get ( signum) )
0 commit comments