【发布时间】:2019-10-03 06:37:16
【问题描述】:
总结问题: 在线程外部的函数中监视线程变量的最佳方法是什么?
原问题: 我希望更好地了解使用 Windows 线程时的最佳实践。我知道有更现代的线程方法,但我仅限于使用 CreateThread。当前设置在 CreateThread 调用的函数中包含一个 WaitForSingleObject 函数,该函数更新一些指针。我需要在线程外部访问这些指针。访问内部数据的最佳实践是什么 WaitForSingleObject 函数?使用 LPVOID params 参数将参数传递给函数很简单,但除了线程 ID 和使用全局变量之外似乎没有输出选项。
HANDLE WINAPI CreateThread( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in_opt LPVOID lpParameter, __in DWORD dwCreationFlags, __out_opt LPDWORD lpThreadId );
【问题讨论】:
-
请出示您的代码。
-
@selbie 在这种情况下我不能,因为它是为了工作。如果需要,我可以编写一些模拟代码,但我只是在寻找一般建议
-
我当然可以提供帮助,但是您的问题非常漫无边际。而且我更容易根据您已经提供的编码示例给出答案。
-
您可以将指向结构或类对象的指针作为
LPVOID参数传递,并使用该结构/类的数据成员代替全局变量。 -
不确定
access data within the WaitForSingleObject function是什么意思。您的意思是如何访问您作为 LPTHREAD_START_ROUTINE 传递的例程中的数据?此外,还不清楚您对输出的期望是什么。你想达到什么目的?工作线程是否异步执行一些短任务?它是否在不断地工作并且你想观察变化?如何共享数据的最佳做法将相应改变。
标签: c++ windows multithreading createthread