- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在嵌入式平台上做一些线程方面的工作。这个平台提供了一个Thread
类,它有一个start
方法接受一个函数指针,像这样:
void do_in_parallel() {
// Some stuff to do in a new thread
}
Thread my_thread;
my_thread.start(do_in_parallel);
问题是没有办法传入参数。1 我想通过创建一个抽象类来解决这个问题,称之为Thread2
,扩展 Thread
(或者它可能只有一个 Thread
作为实例数据)。
Thread2
将有一个纯虚函数 void run()
,目标是将其传递给 Thread::start(void*())
,除了我很快了解到成员函数指针具有不同的类型并且不能像这样使用。我可以将 run()
设置为静态,但我仍然不能拥有多个实例,从而破坏了整个目的(更不用说你不能拥有虚拟静态函数)。
是否有任何不涉及更改原始 Thread
类的解决方法(考虑到它是一个我坚持使用的库)?
<子>1。在许多情况下,全局变量是一种可用的解决方法,但从同一函数指针实例化多个线程时除外。在这种情况下,我无法想出避免竞争条件的方法。
最佳答案
写一个全局线程池。
它维护一个任务队列。这些任务可以有状态。
当你添加一个任务到队列中时,你可以选择同时请求它立即获得一个线程。或者您可以等待池中的线程完成它们正在做的事情。
池中的线程由提供的 Thread 类创建,它们从池中获取行进指令。在大多数情况下,他们应该弹出任务,执行它们,然后等待另一个任务准备就绪。
如果不允许等待,您仍然可以使用一些全局线程管理器来存储线程的状态。
池/管理器返回相当于 future<T>
的值增加你想要的任何功能。提供任务的代码通过该对象而不是嵌入式 Thread 类型与任务交互。
关于c++ - 虚函数的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46356011/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!