|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
aix下多線程
aix下啟動一線程,執行函數的最後是信號燈等待,使用了sysv信號燈,在線程退出時經常會出現段錯誤,或者執行函數最後是sleep語句,都會出現上述的錯誤,對aix是剛接觸,不知道大家有沒有遇到過這個問題,是不是aix下線程控制有什麼需要特別注意的地方,謝謝。 |
aix下多線程
使用posix不行嗎
另外信號燈的設置是什麼樣子的 |
aix下多線程
aix是支持sysv標準,但不支持POSIX,我原先的程序是跑在tru64上的,使用posix的信號燈,現在要移植到aix下信號燈使用semget, semop ,semctl來實現
sembuf ops;
ops.sem_num = 0;
ops.sem_op = -32;
ops.sem_flg = 0; //0, IPC_NOWAIT, SEM_UNDO
if ( semop(key, &ops, 1) != 0 )
printf ("WaitAllSemaphore);
這是獲取全部信號燈的實現,若是單獨使用信號燈並沒有問題,但只要啟動線程,在線程中使用信號燈,退出線程時就會出現錯誤,原因至今也沒有查明。 |
aix下多線程
會不會是向線程發了CANCEL消息後
線程退出處理時產生的問題呢
另外線程如果可能被其它條件終止的話
那麼一般在FLAG要加SEM_UNDO
表示終止時恢復SEM值 |
| |