Re: [請益] 關於 library 的定義?
※ 引述《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
03/30 10:06, 1F
→
03/30 16:50, , 2F
03/30 16:50, 2F
→
03/30 21:17, , 3F
03/30 21:17, 3F
→
03/30 21:18, , 4F
03/30 21:18, 4F
→
03/30 21:20, , 5F
03/30 21:20, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章