gpt4 book ai didi

c++ - 我们如何在线程中使用参数

转载 作者:行者123 更新时间:2023-11-28 04:07:18 25 4
gpt4 key购买 nike

我正在阅读一些程序员首先定义的代码

   typedef void* BLUEVELVETC_HANDLE;

然后他在结构中使用了这个变量。

struct ThreadArgs
{
BLUEVELVETC_HANDLE pSDK;
EBlueVideoChannel nVideoOutputChannel;
BLUE_U32 VideoModeExt;
EUpdateMethod UpdateFormat;
EMemoryFormat MemoryFormat;
};

然后他创建了一个新线程并将结构作为参数发送。

ThreadArgs args;
args.pSDK = pSDKOut;
args.nVideoOutputChannel = BLUE_VIDEOCHANNEL_A;
args.VideoModeExt = VideoModeExt;
args.UpdateFormat = UpdateFormat;
args.MemoryFormat = MemoryFormat;

unsigned int ThreadId = 0;
g_hThread = (HANDLE)_beginthreadex(NULL, 0, &PlaybackThreadFifoMode, &args, CREATE_SUSPENDED,&ThreadId);

最后在这个函数中他使用了参数。

  unsigned int __stdcall PlaybackThreadFifoMode(void* pArg)

unsigned int __stdcall PlaybackThreadFifoMode(void* pArg)
{
ThreadArgs* pArgs = (ThreadArgs*)pArg;
BLUEVELVETC_HANDLE pSDK = pArgs->pSDK;
}

谁能解释一下这段代码的含义。

最佳答案

不幸的是,这是对“为什么程序员要这样做?”这样的问题的最佳答案。是问他们。这通常是唯一令人满意的答案。不幸的是,在原始程序员已不在的情况下,令人满意的答案是极不可能的。

也就是说,我可以告诉您的是,在这种情况下可能发生的事情是,该程序员似乎正在使用一种允许他将多个参数传递给线程函数的技术。通常,线程函数只接受 1 个参数。通过传递结构,程序员可以有效地传递多个参数。

当然,由于您并没有真正传递这些参数,因此程序员必须将所有内容打包到一个结构中,然后在线程内将其解包。但是,效果大致相同:线程现在可以接受多个值而不是 1。

关于c++ - 我们如何在线程中使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58497356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com