2011-05-05 73 views
1

我有一個多線程的JAVA應用程序,它使用共享的c lib。如果我從不同的線程訪問這個庫,會發生什麼?JNI和多線程

謝謝,那鴻

回答

1

這完全依賴於C庫。如果該函數沒有存儲任何狀態(例如,只計算一些結果並僅在堆棧中使用局部變量),那麼從多個線程使用它將是安全的。否則,你必須注意狀態是爲每個線程單獨存儲的,例如,通過使用malloc併爲進一步的調用返回一個句柄,以便以後的調用將重用malloced內存塊中的狀態。

如果我不知道代碼的內部,我更喜歡構建一個小的C應用程序並使用Runtime.exec調用它,但是這僅在C函數做足夠的工作來證明exec執行開銷時纔有用。

+0

謝謝................... – nmnir 2011-05-05 14:57:44