xz: Minor internal changes to handling of --threads.

Now it always defaults to one thread. Maybe this
will change again if a threading method is added
that doesn't affect memory usage.
This commit is contained in:
Lasse Collin 2011-04-09 15:11:13 +03:00
parent 9edd6ee895
commit 335fe260a8
3 changed files with 18 additions and 19 deletions

View File

@ -179,8 +179,8 @@ parse_real(args_info *args, int argc, char **argv)
break;
case 'T':
hardware_threadlimit_set(str_to_uint64(
"threads", optarg, 0, UINT32_MAX));
hardware_threads_set(str_to_uint64("threads",
optarg, 0, LZMA_THREADS_MAX));
break;
// --version

View File

@ -14,9 +14,9 @@
#include "tuklib_cpucores.h"
/// Maximum number of free *coder* threads. This can be set with
/// Maximum number of worker threads. This can be set with
/// the --threads=NUM command line option.
static uint32_t threadlimit;
static uint32_t threads_max = 1;
/// Memory usage limit for compression
static uint64_t memlimit_compress;
@ -29,15 +29,16 @@ static uint64_t total_ram;
extern void
hardware_threadlimit_set(uint32_t new_threadlimit)
hardware_threads_set(uint32_t n)
{
if (new_threadlimit == 0) {
// The default is the number of available CPU cores.
threadlimit = tuklib_cpucores();
if (threadlimit == 0)
threadlimit = 1;
if (n == 0) {
// Automatic number of threads was requested.
// Use the number of available CPU cores.
threads_max = tuklib_cpucores();
if (threads_max == 0)
threads_max = 1;
} else {
threadlimit = new_threadlimit;
threads_max = n;
}
return;
@ -45,9 +46,9 @@ hardware_threadlimit_set(uint32_t new_threadlimit)
extern uint32_t
hardware_threadlimit_get(void)
hardware_threads_get(void)
{
return threadlimit;
return threads_max;
}
@ -139,6 +140,5 @@ hardware_init(void)
// Set the defaults.
hardware_memlimit_set(0, true, true, false);
hardware_threadlimit_set(0);
return;
}

View File

@ -15,12 +15,11 @@
extern void hardware_init(void);
/// Set custom value for maximum number of coder threads.
extern void hardware_threadlimit_set(uint32_t threadlimit);
/// Set the maximum number of worker threads.
extern void hardware_threads_set(uint32_t threadlimit);
/// Get the maximum number of coder threads. Some additional helper threads
/// are allowed on top of this).
extern uint32_t hardware_threadlimit_get(void);
/// Get the maximum number of worker threads.
extern uint32_t hardware_threads_get(void);
/// Set the memory usage limit. There are separate limits for compression