View Single Post
Old 09-01-2022, 03:18
Masquerade's Avatar
Masquerade Masquerade is offline
Registered User
Join Date: Jan 2020
Location: Monte d'Or
Posts: 744
Thanks: 168
Thanked 786 Times in 391 Posts
Masquerade is on a distinguished road
Perhaps an additional constant for FreeArc that specifies the number of CPU threads?

So, some tools allow you to specify thread count as a percentage (such as XTool)

However, some tools read from a static integer in arc.ini or cls.ini. This leaves us with the inability to tailor an installation to each user to use their full system (further in this post I have added an explanation of the LZMA archiver locked at 4 threads despite my system having 16).

I would like to suggest a new constant called {threads}, similar to how {compressor} and {option}. FreeArc can read this and substitute {threads} with however many CPU threads you have.

An existing example of this in action is the windows constant "%NUMBER_OF_PROCESSORS%" which if you echo it in command line will return the number of CPU threads in the system. I use this for when I use MTP or MParallel.

Further detailing this, I can use the open source LZMA archiver from the LZMA SDK as an example of how {threads} would work. Here is the normal unpack command for the LZMA archiver:

[External compressor:LZMA]
header     = 0
unpackcmd  = {compressor} d -mt4 -si -so <stdin> <stdout>
However, with our constant:

[External compressor:LZMA]
header     = 0
unpackcmd  = {compressor} d -mt{threads} -si -so <stdin> <stdout>
And because FreeArc handles the constant, it just replaces {threads} with however many threads you have and uses that as the unpack command passed to the EXE file.
Reply With Quote
The Following User Says Thank You to Masquerade For This Useful Post:
Gehrman (09-01-2022)