问题标签 [beginthread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
62532 浏览

c++ - Visual C++ 线程简单示例

我正在尝试通过将函数传递给 _beginthread 从 main 创建一个基本线程。但我的输出没有完成。

我得到以下输出:

有人可以澄清以下代码中有什么问题吗?

0 投票
1 回答
1414 浏览

c++ - C++/Winforms 线程:我收到 _beginthread 的构建错误

我是线程和 Winforms/C++ 的新手。当我按下一个按钮时,我想在一个新线程中启动一个函数。我一直在关注这个作为线程教程。当我在一个单独的 VC++ 项目中构建该站点上给出的示例代码时,构建成功

但是,如果我在 C++/Winforms 中执行以下操作,构建将无法完成,我会收到构建错误

我在这里想念什么?

帮助!

代码:

构建错误:

0 投票
1 回答
1743 浏览

c++ - 在类函数中将参数传递给 _beginthread

我一直在我的(Windows)C++ 类中使用 _beginthread 来创建线程。据我所知,要使用 _beginthread 并在类中传递成员函数,必须遵循一个相当迟钝的包装协议,例如:

我一直无法将此模型转换为接受线程函数参数的模型。例如,如果我希望我的线程函数改为:

我将如何正确调整我的函数调用?(注意,我试图在没有 boost::thread 或类似库的情况下完成此项目以保持项目一致性)

0 投票
0 回答
750 浏览

c++ - 线程(_beginthreadex)winsock(接受)

我想做一个winsock非阻塞对象这是我的代码

主功能:

服务器.h:

在正常情况下,当它们没有客户端连接时,函数接受会暂停,但是当我使用 _beginthread 或 _beginthreadex 函数时,它不会暂停,如果我更改

它会在接受时暂停

0 投票
2 回答
131 浏览

c++ - 多线程时向函数传递参数

我的任务是创建一个像 Frogger 这样的游戏(你知道 - 青蛙必须过马路的游戏)。到目前为止,我已经创建了青蛙和汽车运动背后的逻辑,但我似乎无法同时运行这些过程。我知道多线程是执行此操作的正确方法,但是在通过 _beginthread 传递参数时遇到了一些麻烦。

这是我到目前为止所拥有的:

因此,如果有人能告诉我实现此功能的正确方法,我将不胜感激。提前致谢 : ]

0 投票
1 回答
1021 浏览

c++ - 将参数传递给 _beginthread 函数

我有以下代码来启动一个新线程

功能是:

它显示一个错误:

因此,我需要定义 int 类型的新参数并将其传递给 ModbusReadWrite() 函数。我怎样才能实现它?

0 投票
0 回答
553 浏览

c++ - shared_ptr 的析构函数问题, 作为参数传递给新线程

我将包含shared_ptrto 的params 结构std::deque作为函数的输入参数传递,该结构将在新线程中工作。这个双端队列在外部对象上创建为公共字段。当我将 shared_ptr 保存到params结构中时,shared_ptr 的引用数会增加,并且一切似乎都很好。

至于线程,它是在调用_beginthread()函数的帮助下创建的。在线程内部,我将一些值推送到由 shared_ptr 指向的双端队列。这些值在外部对象上正确弹出,所以一切似乎又正常了。

当线程完成它的工作时,从堆中删除的参数结构和引用计数器递减(一切都很好)。但是当创建这个 shared_ptr 的外部对象的析构函数被调用时,refs 计数器被递减并等于 0,因此实际上调用了指向对象的析构函数,并且出现了调试断言失败。失败的表达式是 _pFirstBlock == pHead(双重删除?)。但是我在 VS2012 的数据断点的帮助下检查了,该地址shared_ptr._Rep._Uses仅在我上面描述的时刻被访问。

还有一点需要注意:如果没有任何东西推入这个双端队列,那么所有的析构函数都会成功运行。我做错了什么?

shared_ptr 创建:

线程参数结构:

线程创建:

线程函数:

0 投票
0 回答
1638 浏览

visual-studio-2010 - 初学者 Visual C++ 问题:无法将参数 1 从 'void (__cdecl *)(void *)' 转换为 'void (__cdecl *)(void *)'

所以我是一个主要从事 Linux 程序员的人,最近找到了一份使用 Windows 的工作。我已经开发了一些数字代码,但现在需要放一个简单的 GUI。

目前,我有一个带有onClick事件的按钮,该按钮调用了一个调用函数,该函数start启动了数字内容。但这冻结了 GUI,所以我想把调用start放到一个工作线程中。

我已经start这样声明了:void __cdecl start(void* args). 我添加了,__cdec1因为我之前收到了错误:error C2664: '_beginthread' : cannot convert parameter 1 from 'void (__clrcall *)(void *)' to 'void (__cdecl *)(void *)'

现在,当单击按钮时,将运行以下代码:

这给了我令人困惑的错误cannot convert parameter 1 from 'void (__cdecl *)(void *)' to 'void (__cdecl *)(void *)'

如果有人能看出我哪里出错了,我将永远感激不尽。

0 投票
1 回答
126 浏览

c++ - 在 8 核 CPU 上启动 8 个线程不会产生 100% 的 CPU 负载

我正在学习在一个简单的 keygen 示例中使用多线程。我已经实现了哈希键匹配算法,它增加了一个键并将其与原始键进行比较,一旦两个哈希键匹配,它就应该停止。所以我需要遍历 0xffffffffff 不同的哈希键来找到匹配项。我已经阅读了一些关于该主题的 msdn,并决定启动 8 个相同匹配的循环线程,从 thread_number_offset 开始,每次迭代递增 number_of_threads。这是启动代码:

这是带有 for 循环的函数:

一切都很好,但任务管理器窗口中的 CPU 负载没有增加超过 10-15%;此外,并非所有核心都实际加载。核心 0、2、4、6 忙,而 1、3、5、7。我认为对最大 cpu 核心数的不断迭代应该立即以最大能力加载 CPU。为什么会这样?它比我做的复杂得多吗?

0 投票
0 回答
720 浏览

c++ - C ++将结构传递给线程之间的函数

我面临一个奇怪的问题。我有以下结构和使用该结构的方法。

调用来自另一个方法:

问题是:

AsyncDownloader方法被调用时,发送和接收的结构地址是相同的。但是访问成员会给出NULL值。

关于我做错了什么的任何见解?