我正面臨有關線程場景的一個問題。關於線程
我在我的過程中有三個線程。一個是子系統1線程,第二個是子系統2線程,第三個是商店管理器線程。
subsystem1和subsystem2線程都調用storemanager線程來與數據庫進行通信。
任何人都可以幫助我如何調用storemanager線程方法或如何通過命令從我的sybsystem線程調用store manager線程方法並從store manager線程獲取響應。
需要在這方面的指導。我在linux中使用C++。
我正面臨有關線程場景的一個問題。關於線程
我在我的過程中有三個線程。一個是子系統1線程,第二個是子系統2線程,第三個是商店管理器線程。
subsystem1和subsystem2線程都調用storemanager線程來與數據庫進行通信。
任何人都可以幫助我如何調用storemanager線程方法或如何通過命令從我的sybsystem線程調用store manager線程方法並從store manager線程獲取響應。
需要在這方面的指導。我在linux中使用C++。
有沒有從另一個線程「調用」一個線程的東西。你的三個線程在同一時間獨立運行。
您的店鋪經理線程充當爲其他兩個線程提供服務的工作線程。
當其中一個子系統線程需要發出數據庫操作時,它會向存儲管理器線程發送某種形式的消息,其中包含有關需要執行的功能的信息。實現此通信的一種方法是使用線程安全隊列。在這種情況下,子系統線程會將作業請求添加到作業隊列中。
存儲管理器線程監視作業隊列,並在隊列由其他線程添加時執行作業請求。已完成的作業將從隊列中刪除。
請注意,當存儲管理器線程執行請求的任務時,子系統線程不會阻塞。相反,您必須在線程之間開發一種通信機制,通過這種機制,子系統線程可以在作業完成時找出並在必要時獲取有關結果的信息。
我建議您閱讀線程安全的數據結構和同步原語。
void *storeManager(void *arg)
{
printf("\nI am storeManager function\n");
pthread_exit(NULL);
}
void *subSystem(void *arg)
{
pthread_t newThread;
printf("I am subSystem function\n");
pthread_create(&newThread, NULL, storeManager, NULL);
pthread_exit(NULL);
}
int main (int argc, char *argv[])
{
pthread_t threads;
printf("In main: creating subSystem thread\n");
pthread_create(&threads, NULL, subSystem, NULL);
pthread_exit(NULL);
}
在這裏你正在創建新的線程。但假設兩個線程已經在運行,那麼如何從另一個線程調用一個線程的方法來分配任務? – Muthu 2012-02-28 05:56:18
您只能創建一個線程併爲其分配一個方法。當一個線程已經運行時,你不能像普通的方法那樣簡單地調用它。 POSIX API有一個'pthread_create'函數來創建一個線程併爲其分配一個方法。如果你想分配一個新的方法或同一個到另一個線程,你需要創建一個新的線程。我希望你明白我的意思。 – noMAD 2012-02-28 06:06:17
但我仍然不明白你的意思。如果你有一個單獨的方法'write()',那麼你可以在任何線程內部或外部調用它(只要確保它們不輸入競爭條件)。如果你有一個'void * write(void * arg)'方法,那麼我知道調用它的唯一方法是'pthread_create()' – noMAD 2012-02-28 06:14:23
你基本上是如何從另一個線程(子系統)調用線程(storeManager)的問題嗎? – noMAD 2012-02-28 05:41:16
是的......我需要從其他線程調用storemanager線程中的方法。假設在storemanager線程中有一個叫做「Write」的方法。其他線程將調用此寫入並傳遞參數並獲得返回響應。我需要這種行爲。 – Muthu 2012-02-28 05:44:06
添加標籤c或C++,您將獲得更多答案。 – noMAD 2012-02-28 06:10:04