Re: [請益] 關於 library 的定義?

看板Soft_Job (軟體人)作者 (有些事,有時候。。。)時間14年前 (2012/03/30 09:07), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《fuha (mimi)》之銘言: : 是這樣的 : 最近有一位朋友 問我 library 到底要不要擁有 states : 他這這樣說我大概懂意思 : 譬如 libusb 的code : 一開始先要用 : int libusb_init (libusb_context ** ) : 得到libusb_context 這個指標看 source code 就知道 : 是一些內部用的 pthread_mutex_t 之類的 : 這樣 不同的 User就可以不會互相干擾的使用這個 library : 這樣感覺上就是 無狀態的 library ? 不知道我這樣理解對嗎?? : 那回到問題來 library 在設計上有一定要類似上述做法嗎? : 不知道各位板上各位 對這個問題有什麼想法? : 才學疏淺 所以我也不知道要怎麼回答~ : 所以上來賜教~ 重點不是有沒有狀態,而是如何管理狀態。 並且保證在需要狀態的情況下, 不同時間、不同的 caller 呼叫順序不會影響結果。 同時間、不同的 caller 呼叫順序不會影響結果 做到前者,至少狀態的管理算合格, 但你無法在文件上說你的 library 保證 thread-safe 做到後者,並行的操作時的狀態管理, 無論是來自於外部的行為,或內部的操作都確保狀態不被污染。 在 c 裡面,常會用 struct 包出個 XXX_context。 其實意思就是將狀態『封裝』在這結構之內。 古早的說法好像是:table driven !? 而 function 的實作就單純只有邏輯, 依收到的 XXX_context 內容來決定能 fucntion 的行為。 所以,有沒有狀態其實不是個問題, 真正的問題是實作者有沒有妥善管理狀態。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.110.37

03/30 10:06, , 1F
我猜他的狀態是指「global state」
03/30 10:06, 1F

03/30 16:50, , 2F
他的意思是像 strtok 這種狀態嗎?
03/30 16:50, 2F

03/30 21:17, , 3F
這個回覆的確是我想問的~ 因為我認真看了一下linux 一般的
03/30 21:17, 3F

03/30 21:18, , 4F
library 都會使用 xx_context這種手法做無狀態的切割,所以想
03/30 21:18, 4F

03/30 21:20, , 5F
了解一下~ 感謝 qrtt1~
03/30 21:20, 5F
文章代碼(AID): #1FTGT9cm (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1FTGT9cm (Soft_Job)