Bug#1109782: unblock: 7zip/25.00+dfsg-1 (7/13)
From
Bastian Germann@21:1/5 to
All on Wed Jul 23 19:40:02 2025
[continued from previous message]
*/
#ifndef Z7_ST
+
+#ifdef _WIN32
+ // we don't use chunk multithreading inside lzma2 stream.
+ // so we don't set xzProps.lzma2Props.numThreadGroups.
+ if (_numThreadGroups > 1)
+ xzProps.numThreadGroups = _numThreadGroups;
+#endif
UInt32 numThreads = _numThreads;
@@ -1183,6 +1193,8 @@
CMultiMethodProps::SetMethodThreadsTo_IfNotFinded(oneMethodInfo, numThreads);
}
+ // printf("\n====== GetProcessGroupAffinity : \n");
+
UInt64 cs = _numSolidBytes;
if (cs != XZ_PROPS_BLOCK_SIZE_AUTO)
oneMethodInfo.AddProp_BlockSize2(cs);
diff -Nru 7zip-24.09+dfsg/CPP/7zip/Archive/Zip/ZipUpdate.cpp 7zip-25.00+dfsg/CPP/7zip/Archive/Zip/ZipUpdate.cpp
--- 7zip-24.09+dfsg/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2024-08-09 12:00:00.000000000 +0200
+++ 7zip-25.00+dfsg/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2025-07-03 11:00:00.000000000 +0200
@@ -250,13 +250,26 @@
HRESULT CreateEvents()
{
- WRes wres = CompressEvent.CreateIfNotCreated_Reset();
+ const WRes wres = CompressEvent.CreateIfNotCreated_Reset();
return HRESULT_FROM_WIN32(wres);
}
- HRESULT CreateThread()
+ // (group < 0) means no_group.
+ HRESULT CreateThread_with_group(
+#ifdef _WIN32
+ int group
+#endif
+ )
{
- WRes wres = Thread.Create(CoderThread, this);
+ // tested in win10: If thread is created by another thread,
+ // child thread probably uses same group as parent thread.
+ // So we don't need to send (group) to encoder in created thread.
+ const WRes wres =
+#ifdef _WIN32
+ group >= 0 ?
+ Thread.Create_With_Group(CoderThread, this, (unsigned)group) :
+#endif
+ Thread.Create(CoderThread, this);
retu