1
我發現在HPUX上,一個SIGALRM信號可以由系統創建,並通過單個線程應用程序中的進程正確捕獲。但是,如果我在一個線程中設置SIGALRM,SIGALRM不會再發生。 爲什麼?此問題僅在HPUX平臺上發生,但在其他UNIX平臺(solaris sparc,x86,Linux,AIX,Mac和Ubantu)上運行良好。爲什麼SIGALRM不能在HPUX的線程中發生?
請幫助我!謝謝!
我發現在HPUX上,一個SIGALRM信號可以由系統創建,並通過單個線程應用程序中的進程正確捕獲。但是,如果我在一個線程中設置SIGALRM,SIGALRM不會再發生。 爲什麼?此問題僅在HPUX平臺上發生,但在其他UNIX平臺(solaris sparc,x86,Linux,AIX,Mac和Ubantu)上運行良好。爲什麼SIGALRM不能在HPUX的線程中發生?
請幫助我!謝謝!
信號處理Multithreaded Environments:作爲信號處理器:對於所有的UNIX平臺,信號處理程序都是基於每個進程安裝的。在多線程環境中,每個進程內的信號只有一個信號處理程序。爲任何線程安裝的最後一個信號處理程序對進程中的所有線程均有效。處理器在信號傳遞時被調用。
此外,SIGALRM
是由接收它們的進程控制之外的事件所產生的異步信號,並且在不可預知的時間到達。由於異步信號傳遞到進程而不是線程而不考慮正在執行的指令。這就是爲什麼SIGALRM
不可能在HPUX
的線程中發生。
這是在HP-UX調度策略中;有Signal Processing Notes of HP-UX。
非常感謝!但爲什麼它可以在其他Unix上工作?如何解決問題? –
既然如此,如何在HPUX上設置線程計時器?沒門? –