λ²κ·Έ μ€λͺ
λ¬Έμ #2238μμ @animalize κ° λ³΄κ³ ν
ZSTD_e_end end μ§μλ¬Έκ³Ό μΆλ ₯ λ²νΌ ν¬κΈ° >= ZSTD_compressBound()λ₯Ό μ¬μ©ν λ μμ
λ²νΈλ ZSTDMT_computeNbJobs() ν¨μμ μν΄ κ³μ°λ©λλ€. μ΄ ν¨μλ nbWorkers
μ λ°λΌ λ€λ₯Έ μμ μμ
μ μμ±ν©λλ€.
μμλλ νλ
zstd λ€μ€ μ€λ λ μμΆμ μΆλ ₯μ μ€λ λ μμ 무κ΄ν΄μΌ ν©λλ€.
κ³ μΉλ€
ZSTDMT_computeNbJobs()
λ₯Ό nbWorkers
λ
립μ μΌλ‘ λ§λλλ€.ν΄κ²° λ°©λ²
μ΄ λ²κ·Έλ₯Ό ν΄κ²°ν΄μΌ νλ κ²½μ° ZSTD_e_endλ‘ μ€νΈλ¦¬λ° μμ
μ μμνμ§ λ§μμμ€. ZSTD_e_endλ₯Ό νΈμΆνκΈ° μ μ ZSTD_e_continueλ‘ μ
λ ₯μ μ΅μ 1λ°μ΄νΈλ₯Ό μ λ¬νκ±°λ μΆλ ₯ λ²νΌκ° < ZSTD_compressBound(inputSize)
μΈμ§ νμΈνμμμ€.
λ€μ€ μ€λ λ zstd
μ κ²°κ³Όκ° μ€λ λμ nbμ μμ‘΄νμ§ μλλ€κ³ λ§νλ κ²μ μ§λ¦κΈΈμ
λλ€.
μ€μ λ‘ μ§μλλ κΈ°λ₯μ _streaming_ multithreaded zstd
μ κ²°κ³Όκ° nbκ°μ μ€λ λμ μμ‘΄νμ§ μλλ€λ κ²μ
λλ€.
(κ·Έλ¦¬κ³ μ΄κ²μ΄ zstd
CLIμμ μ¬μ©νλ κ²μ
λλ€).
μ΄ μ μλ₯Ό ν΅ν΄ λ€λ₯Έ μ μ¬μ μΈ μμ μ¬νμ κ³ λ €ν μ μμ΅λλ€.
nbWorkers >= 1
μΌ λ ZSTD_e_end
λν μν¨μ€ λ°λ‘ κ°κΈ°λ₯Ό μ¬μ©νμ§ λ§μμμ€.
μ΄ λ¬Έμ λ₯Ό μ λ°νλ κ²μ μν¨μ€ λͺ¨λμ λν μμμ΄κΈ° λλ¬Έμ
λλ€.
μ΄κ²μ λ¨μΌ ν¨μ€ MT μμΆκΈ°λ₯Ό μ μ©νλ κ²λ³΄λ€ λ λ°©ν΄κ° λ μ μμ΅λλ€.
μ΄ λ³΄μ¦μ μ 곡νλλ‘ μ€κ³λμ§ μμμ΅λλ€.
λ λ€λ₯Έ (μ μ¬μ μΌλ‘ κΈμ μ μΈ) λΆμμ©μ μ€νΈλ¦¬λ° λ©ν°μ€λ λ μμΆμ΄ _νμ_ λΉμ°¨λ¨μμ 보μ₯νλ€λ κ²μ
λλ€. (μ°¨λ¨) λ¨μΌ ν¨μ€ λͺ¨λμ λ μ΄μ μμνμ§ μκΈ° λλ¬Έμ
λλ€.
_edit_ : ZSTD_e_flush
λ° ZSTD_e_end
μ§μλ¬Έμ μμ νλ©΄ MT API κ³μ½μ΄ μ΅μ μλ°©ν₯ μ§νμμ μ΅λ μ§ν.
λ λ€λ₯Έ (μ μ¬μ μΌλ‘ κΈμ μ μΈ) λΆμμ©μ μ€νΈλ¦¬λ° λ©ν°μ€λ λ μμΆμ΄ λ μ΄μ μ°¨λ¨ λͺ¨λμ μμλμ§ μκΈ° λλ¬Έμ νμ λΉμ°¨λ¨μμ 보μ₯νλ€λ κ²μ λλ€.
λλ νλ λ€μ€ μ€λ λ μμΆμμ νμ μ°¨λ¨λλ ZSTD_compressStream3()
ν¨μλ₯Ό μΆκ°νλ κ²μ μ μνκ³ μΆμμ΅λλ€.
λ°μ μκ° κ³μν΄μ non-blocking μ§ν μν©μ νμΈνλ©΄ λ§€μ° λΆνΈ ν©λλ€.
νΈμ§ : λ°©κΈ μ°Ύμμ΅λλ€. μ§ν μν©μ νμΈνλ κ²μ΄ κ·Έλ€μ§ λΆνΈνμ§ μμ΅λλ€.
do {
zstd_ret = ZSTD_compressStream2(self->cctx, &out, &in, ZSTD_e_continue);
} while (out.pos != out.size && in.pos != in.size && !ZSTD_isError(zstd_ret));
κ·Έλ¬λ νμ ZSTD_compressStream3()
μ°¨λ¨νλ κ²μ΄ λ λ«μ΅λλ€. μ‘°κΈ λ λΉ λ₯Ό μ μμ΅λλ€. IMO λ§μ νλ‘κ·Έλλ¨Έ μ¬μ©μλ μμΆ μ§νλ₯ μ μ»μ νμκ° μμ΅λλ€.
μ΄κ²μ λ¨μΌ ν¨μ€ MT μμΆκΈ°λ₯Ό μ μ©νλ κ²λ³΄λ€ λ λ°©ν΄κ° λ μ μμ΅λλ€.
μ΄ λ³΄μ¦μ μ 곡νλλ‘ μ€κ³λμ§ μμμ΅λλ€.
λ€, κ·Έκ² λ μ¬μΈ κ²λλ€. μ±κΈ ν¨μ€ MT μμΆκΈ°μ λͺ¨λ μμ μ ν λ²μ μμν΄μΌ νλ€λ μ¬μ€μ μκ³ μμμ΅λλ€.
μ λ νλ λ€μ€ μ€λ λ μμΆμμ νμ μ°¨λ¨λλ ZSTD_compressStream3() ν¨μλ₯Ό μΆκ°νλ κ²μ μ μνκ³ μΆμμ΅λλ€.
μΌλ°μ μΌλ‘ μ¬λλ€μ΄ μ€νΈλ¦¬λ° μμΆ λ£¨νλ₯Ό μμ±νλ λ°©μμ μ΅λν μμΌλ‘ μ§ννμ§ μλ κ²μ΄ ν¬κ² λΆνΈνμ§ μμμΌ ν©λλ€. μ΄μ κ°μ κ²μ μΆκ°νλ€λ©΄ μλ‘μ΄ APIκ° νμνμ§ μμ κ²μ λλ€. μλ§λ κ·Έκ²μ μ μ΄νκΈ° μν΄ μμΆ λ§€κ°λ³μλ₯Ό μΆκ°ν΄μΌ ν κ²μ λλ€. κ·Έλ¬λ νμ¬λ‘μλ ν¬κ² νμνμ§ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λ€, κ·Έκ² λ μ¬μΈ κ²λλ€. μ±κΈ ν¨μ€ MT μμΆκΈ°μ λͺ¨λ μμ μ ν λ²μ μμν΄μΌ νλ€λ μ¬μ€μ μκ³ μμμ΅λλ€.
μΌλ°μ μΌλ‘ μ¬λλ€μ΄ μ€νΈλ¦¬λ° μμΆ λ£¨νλ₯Ό μμ±νλ λ°©μμ μ΅λν μμΌλ‘ μ§ννμ§ μλ κ²μ΄ ν¬κ² λΆνΈνμ§ μμμΌ ν©λλ€. μ΄μ κ°μ κ²μ μΆκ°νλ€λ©΄ μλ‘μ΄ APIκ° νμνμ§ μμ κ²μ λλ€. μλ§λ κ·Έκ²μ μ μ΄νκΈ° μν΄ μμΆ λ§€κ°λ³μλ₯Ό μΆκ°ν΄μΌ ν κ²μ λλ€. κ·Έλ¬λ νμ¬λ‘μλ ν¬κ² νμνμ§ μμ΅λλ€.