sc
v1.0.4
可移植、獨立的 C 庫和資料結構。 (C99)
每個資料夾都是獨立的,其中包含單一標頭/來源檔案對。沒有
為庫構建,只需複製所需的文件即可。
例如,如果您需要記錄器,請將 sc_log.h 和 sc_log.c 複製到您的專案中。
Linux 上有 100% 的分支覆蓋率,CI 運行在
作業系統:Linux、MacOS、FreeBSD 和 Windows 編譯器:GCC、Clang、MSVC Arch:x64、aarch64、armv6(32 位元)、armv7(32 位元)、ppc64le、s390x(大端)、riscv64 消毒劑:valgrind 和 clang/gcc 消毒劑(地址、未定義、線程)
圖書館 | 描述 |
---|---|
大批 | 通用數組/向量 |
緩衝 | 用於編碼/解碼變數的緩衝區,最適合協議/序列化實現 |
狀態 | 適用於 Posix 和 Windows 的條件包裝器 |
CRC32 | crc32c,使用 crc32c CPU 指令(如果可用) |
堆疊 | 最小堆也可以用作最大堆/優先權隊列 |
.ini | Ini解析器 |
鍊錶 | 侵入式鍊錶 |
記錄器 | 記錄器 |
地圖 | 高性能開放尋址哈希圖 |
記憶體映射 | 適用於 Posix 和 Windows 的 Mmap 包裝器 |
互斥量 | Posix 和 Windows 的互斥包裝器 |
選項 | 命令列參數解析器。非常基本的一個 |
效能 | 透過 perf_event_open() 取得效能計數器資訊的基準實用程式 |
佇列 | 通用佇列,也可以用作出隊/堆疊/列表 |
SC | 實用功能 |
訊號 | 訊號安全 snprintf 和訊號處理程序(處理 CTRL+C、崩潰時列印回溯等) |
插座 | Pipe / tcp 套接字(也是 unix 網域套接字) /Epoll/Kqueue/WSAPoll for Posix 和 Windows |
細繩 | 長度前綴、空終止的 C 字串。 |
線 | Posix 和 Windows 的線程包裝器。 |
時間 | Posix 和 Windows 的時間和睡眠函數 |
計時器 | 具有快速輪詢/取消操作的哈希定時輪實現 |
烏裡 | 一個基本的 uri 解析器 |
它比庫 X 好嗎?
我經常將這些庫用於高效能伺服器端應用程式。也,
我關心可讀且易於調試的程式碼。總之,這些庫顯示
我對效能/API 設計/可讀性的品味(權衡)。你可能或可能
不喜歡。
為什麼不在X這裡改變API,這樣會比較容易使用呢?
請發送拉取請求,但請確保不要引入未定義的
行為。可以提供更好的 API,尤其是通用函式庫,
如果你不關心未定義的行為。我盡力避免它。
使用這些函式庫最有效的方法是什麼?
就像任何其他程式碼一樣。作為來源文件添加到您的專案中並最好使用
-O3 -flto + PGO。但它可能對您的用例沒有任何影響。
庫 X 是否在任何產品中使用?
生產中使用了一些庫,但請務必自行測試。
有釋放嗎?
請使用主分支。它被認為是穩定的。
你們會保持 API 穩定嗎?
請不要期望有穩定的 API。這些庫相當
小(其中大多數不到幾百行程式碼)並且理想情況下您
應該閱讀程式碼並理解它的作用並根據您的需求進行調整
需要。所以,不要盲目更新庫。我希望你能處理好
輕鬆解決任何可能的 API 差異。話雖這麼說,我會盡力維持
API穩定。