关于螺纹
Regarding threading
本文关键字:于螺纹 更新时间:2023-10-16
我面临一个关于线程场景的问题。
我的过程中有三个线程。一个是subsystem1线程,第二个是subssystem2线程,第三个是存储管理器线程。
子系统1和子系统2线程都调用storemanager线程来与数据库进行通信。
有人能帮助我如何调用storemanager线程方法,或者如何传递命令从我的sybsystem线程调用store manager线程方法并从store manager线程返回响应吗。
需要这方面的指导。我在linux中使用c++。
没有从另一个线程"调用"线程这回事。您的三个线程同时运行,并且彼此独立。
您的存储管理器线程充当一个工作线程,为来自其他两个线程的请求提供服务。
当其中一个子系统线程需要发出数据库操作时,它会向存储管理器线程发送某种形式的消息,其中包含有关需要执行的函数的信息。实现这种通信的一种方法是使用线程安全队列。在这种情况下,子系统线程将向作业队列添加作业请求。
存储管理器线程监视作业队列,并在其他线程添加作业请求时执行队列中的作业请求。已完成的作业将从队列中删除。
请注意,当存储管理器线程执行请求的任务时,子系统线程不会阻塞。相反,您必须在线程之间开发一种通信机制,通过该机制,子系统线程可以发现作业何时完成,并在必要时获得有关结果的信息。
我建议您阅读线程安全的数据结构和同步原语。
void *storeManager(void *arg)
{
printf("nI am storeManager functionn");
pthread_exit(NULL);
}
void *subSystem(void *arg)
{
pthread_t newThread;
printf("I am subSystem functionn");
pthread_create(&newThread, NULL, storeManager, NULL);
pthread_exit(NULL);
}
int main (int argc, char *argv[])
{
pthread_t threads;
printf("In main: creating subSystem threadn");
pthread_create(&threads, NULL, subSystem, NULL);
pthread_exit(NULL);
}
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 等<thing>效于char32_t
- 类似于strcat()的函数出现问题
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 算术运算的结果类似于:C浮点变量中的1/3
- 相当于 pybind11 中的 boost::p ython py::scope().attr()
- 如何将记忆应用于此递归函数?
- 对对应于矩阵的行和列的对向量进行排序
- OpenGL - 在 NDC 中计算位置适用于着色器,但不适用于'regular'程序
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 为什么字符串比较的 == 运算符相对于任一字符串长度线性时间(似乎)?
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- createFile() 和 DeviceIoControl() 等效于 Unix/Linux 中的卷设备
- 为什么内存屏障依赖于变量?
- 为什么我的变量存在于其范围之外
- 适用于工作线程的螺纹"fence"