lzma_mt Struct Reference

Multithreading options. More...

`#include <container.h>`

## Data Fields

uint32_t | flags
| Flags. More...
uint32_t | threads
| Number of worker threads to use. More...
uint64_t | block_size
| Maximum uncompressed size of a Block. More...
uint32_t | timeout
| Timeout to allow lzma_code() to return early. More...
uint32_t | preset
| Compression preset (level and possible flags) More...
const lzma_filter * | filters
| Filter chain (alternative to a preset) More...
lzma_check | check
| Integrity check type. More...
lzma_reserved_enum | reserved_enum1
lzma_reserved_enum | reserved_enum2
lzma_reserved_enum | reserved_enum3
uint32_t | reserved_int1
uint32_t | reserved_int2
uint32_t | reserved_int3
uint32_t | reserved_int4
uint64_t | reserved_int5
uint64_t | reserved_int6
uint64_t | reserved_int7
uint64_t | reserved_int8
void * | reserved_ptr1
void * | reserved_ptr2
void * | reserved_ptr3
void * | reserved_ptr4

## Detailed Description

Multithreading options.

## Field Documentation

## flags

uint32_t lzma_mt::flags

Flags.

Set this to zero if no flags are wanted.

No flags are currently supported.

Referenced by get_options().

## threads

uint32_t lzma_mt::threads

Number of worker threads to use.

Referenced by get_options().

## block_size

uint64_t lzma_mt::block_size

Maximum uncompressed size of a Block.

The encoder will start a new .xz Block every block_size bytes. Using LZMA_FULL_FLUSH or LZMA_FULL_BARRIER with lzma_code() the caller may tell liblzma to start a new Block earlier.

With LZMA2, a recommended block size is 2-4 times the LZMA2 dictionary size. With very small dictionaries, it is recommended to use at least 1 MiB block size for good compression ratio, even if this is more than four times the dictionary size. Note that these are only recommendations for typical use cases; feel free to use other values. Just keep in mind that using a block size less than the LZMA2 dictionary size is waste of RAM.

Set this to 0 to let liblzma choose the block size depending on the compression options. For LZMA2 it will be 3*dict_size or 1 MiB, whichever is more.

For each thread, about 3 * block_size bytes of memory will be allocated. This may change in later liblzma versions. If so, the memory usage will probably be reduced, not increased.

Referenced by get_options().

## timeout

uint32_t lzma_mt::timeout

Timeout to allow lzma_code() to return early.

Multithreading can make liblzma to consume input and produce output in a very bursty way: it may first read a lot of input to fill internal buffers, then no input or output occurs for a while.

In single-threaded mode, lzma_code() won't return until it has either consumed all the input or filled the output buffer. If this is done in multithreaded mode, it may cause a call lzma_code() to take even tens of seconds, which isn't acceptable in all applications.

To avoid very long blocking times in lzma_code(), a timeout (in milliseconds) may be set here. If lzma_code() would block longer than this number of milliseconds, it will return with LZMA_OK. Reasonable values are 100 ms or more. The xz command line tool uses 300 ms.

If long blocking times are fine for you, set timeout to a special value of 0, which will disable the timeout mechanism and will make lzma_code() block until all the input is consumed or the output buffer has been filled.

Note
  Even with a timeout, lzma_code() might sometimes take somewhat long time to return. No timing guarantees are made.

## preset

uint32_t lzma_mt::preset

Compression preset (level and possible flags)

The preset is set just like with lzma_easy_encoder(). The preset is ignored if filters below is non-NULL.

Referenced by get_options().

## filters

const lzma_filter* lzma_mt::filters

Filter chain (alternative to a preset)

If this is NULL, the preset above is used. Otherwise the preset is ignored and the filter chain specified here is used.

Referenced by get_options().

## check

lzma_check lzma_mt::check

Integrity check type.

See check.h for available checks. The xz command line tool defaults to LZMA_CHECK_CRC64, which is a good choice if you are unsure.

The documentation for this struct was generated from the following file:

- liblzma/api/lzma/container.h