不会暂停执行的C++循环

问题描述:

我有一个我在其他地方使用的dll文件,但是在dll文件中,我有一个类,它需要经常由它内部的函数进行更新。然后我想创建一个循环,每次执行该函数。但即便如此,它暂停了使用dll的线程,因为它在循环中被捕获(等待它结束)。因此,我的程序冻结。不会暂停执行的C++循环

那么,如何创建此循环而不会冻结我的线程。

PS。我虽然并试图使用一个计时器(.net),但我真的想排除托管代码。

+0

在DLL中创建一个计时器? – 2012-08-06 20:04:43

+5

难道你不能启动另一个线程并从中调用该函数吗? – learnvst 2012-08-06 20:06:31

+0

不,我想要一个DLL(有一个原因,但我不想现在讨论),我试图创建一个计时器,但是当定义事件处理程序时,我必须混合托管代码和非托管代码,builded完美,但在调试时,会崩溃。 – 2012-08-06 20:15:48

没有任何代码示例,它不会很容易给你一个确切的答案,但基本上你需要一个新的线程。您创建新线程的方式取决于您/您使用的API。你可以使用.NET,你可以使用boost,就像Lirik建议的那样,WINAPI,不管。这一切归结为:C++中的线程是特定于平台的(请参阅Simple example of threading in C++)。因此,如果没有关于操作系统和编译器的更多细节,实际的代码示例将不可能实现。由于“执行暂停”可能只是一个无限循环,因此您可能需要考虑阅读有关C++线程的一些材料。

如果功能已经封装在一个类中,这很好,因为您可以将线程的启动和结束的责任正确地赋予类本身,而不需要调用线程知道它的任何内容。