Improve: Set multi-thread compression as a option for remote control

This commit is contained in:
yuanyuanxiang
2025-11-30 08:02:44 +01:00
parent 9e4aeab1c7
commit d6464b48b5
5 changed files with 32 additions and 2 deletions

View File

@@ -118,7 +118,7 @@ IOCPClient::IOCPClient(const State&bExit, bool exit_while_disconnect, int mask,
#if USING_CTX
m_Cctx = ZSTD_createCCtx();
m_Dctx = ZSTD_createDCtx();
auto n = ZSTD_CCtx_setParameter(m_Cctx, ZSTD_c_nbWorkers, 4);
auto n = ZSTD_CCtx_setParameter(m_Cctx, ZSTD_c_nbWorkers, 0);
if (Z_FAILED(n)) {
ZSTD_CCtx_setParameter(m_Cctx, ZSTD_c_nbWorkers, 0);
}
@@ -130,6 +130,18 @@ IOCPClient::IOCPClient(const State&bExit, bool exit_while_disconnect, int mask,
#endif
}
void IOCPClient::SetMultiThreadCompress(int threadNum) {
#if USING_CTX
BOOL failed = TRUE;
if (threadNum > 1) {
failed = Z_FAILED(ZSTD_CCtx_setParameter(m_Cctx, ZSTD_c_nbWorkers, threadNum));
}
if (failed) {
ZSTD_CCtx_setParameter(m_Cctx, ZSTD_c_nbWorkers, 0);
}
#endif
}
IOCPClient::~IOCPClient()
{
m_bIsRunning = FALSE;

View File

@@ -208,6 +208,7 @@ public:
{
return g_bExit;
}
void SetMultiThreadCompress(int threadNum=0);
protected:
virtual int ReceiveData(char* buffer, int bufSize, int flags)
{

View File

@@ -421,6 +421,11 @@ VOID CScreenManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
SwitchScreen();
break;
}
case CMD_MULTITHREAD_COMPRESS: {
int threadNum = szBuffer[1];
m_ClientObject->SetMultiThreadCompress(threadNum);
break;
}
case COMMAND_NEXT: {
NotifyDialogIsOpen();
break;