关于螺纹

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);
}