0

プログラムが無期限に一時停止している理由、つまり無限ループのような動作を示している理由を理解するのに苦労しています

def class foo():
    '''
    ...
    '''
    def __catcher(self, signum, _):
        print "TIME OUT EXCEEDED"
        # Reset timer
        signal.setitimer(signal.ITIMER_REAL, 0.0, _SENDERTMOUT_)
        # Do something 
        for i in range (self.base, self.next_seqno):
            '''
            ...
            '''
    def start(self):
        while something:
            '''
            Start doing some work
            '''
            if self.base == self.next_seqno:
                old_handler = signal.signal(signal.SIGALRM, self.__catcher) 
                signal.setitimer(signal.ITIMER_REAL, _SENDERTMOUT_)

            '''
            Do more work until timer goes off
            '''

おそらく、実行順序がわからないのですが、start() でタイマーがタイムアウトすると、プログラムは __catcher() にジャンプしますよね? 次に、タイマーがリセットされ、ステートメントの残りの部分がリセットされ、プログラムはどこで実行を再開しますか?

助けてくれてありがとう!

4

1 に答える 1

0

タイマーが中断したところに戻るのかな?

于 2013-08-07T18:11:54.397 に答える