藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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值



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com