如何用c 實現一個沒有裝箱的通用容器?

時間 2022-01-25 03:10:52

1樓:方辰

//第一步:使用 RecyclableMemoryStream 作為佇列的儲存方式;

//第二步:使用互鎖保護當前佇列的剩餘元素數量,當剩餘元素為0時,讀取方使用某種阻塞機制等待消費方的訊息;

//第三步:為每一個可以進入佇列的值型別編號;

//第四步:設計一個靜態鍵值表,可以從編號對映到處理該物件的方法和該物件的尺寸;

//第五步:當加入佇列時,先將值型別的序號放入流,然後將值型別物件序列化為位元組後放入流;

//第六步:當移出佇列時,先讀取值型別的序號,通過該序號得知該結構的型別、長度、和處理方法,然後從流中反序列化並讀取物件,移出佇列。

2樓:ksg fk

每個結構體佈局都可能不一樣啊...一個24bit一個32bit存不到一起去...非要一個容器統一處理的似乎只能開個byte陣列,手動記錄每個例項的元資訊,比如偏移量,大小,型別,存取的時候強轉(寫著寫著變成C了

3樓:小村大梁

有別的答主提到了List,那我就建議題主按照這個思路走,用泛型來處理所有的容器就好,比如字典、佇列都可以,泛型通過底層的封裝避免了面上的裝拆箱,當然,在現代處理器和記憶體發展到今天的這個水平,泛型的應用更多的是體現在方便上,實際上裝拆箱在高階語言這裡對效能的影響基本可以忽略不計了。

現代軟體系統的效能瓶頸大多發生在網路、資料庫,這些才是高發區,應用層面的事情在這兩貨面前就是個弟弟,再不濟還可以橫向擴充套件加他幾十臺伺服器或者增加幾百個例項。