2015-03-30 45 views
1

在Linux內核中,工作隊列對於調度任務的異步執行很有用。在僞代碼,使用pthread的工作隊列

while(condition) { 
    read data 
    add to linked list 
    schedule_work(&write_data) 
} 

調度功能寫入數據,其中寫入數據做如下的異步執行:

write_data() { 
    write data from first node of linked list 
    link to next node 
    free first node 
} 

在用戶空間,我想達到同樣的事情。然而pthread似乎有點不同,讓我感到困惑。我想要做到以下幾點:

while(condition) { 
    read data 
    add to linked list 
    schedule writing of data 
} 

我想寫入數據是異步的。我如何使用pthread實現這一點?

+0

在用戶級別,唯一的調度機制是進程和線程。 pthreads沒有工作隊列的概念。但是有一些機制可以實現這一點。一些選項:消息隊列(man mq_overview)和pthread_cond_wait – kaylum 2015-03-30 22:12:10

回答

0

我做了一個適合我的目的如下:我需要使用互斥量來控制訪問標誌

write_data_thread() { 
    wait for flag 
    write data if flag is set 
    reset flag 
    sleep 
} 

while(condition) { 
    read data 
    add to linked list 
    set flag 
}