2011-10-11 62 views
1

我有一個在Linux上運行的C代碼應用程序,它在互斥體上阻塞了一個pthread。 我希望在MysQL數據庫中創建INSERT語句時解鎖此線程。線程然後會從數據庫讀取一些數據。如何獲得Mysql INSERT來發信號通知pthread互斥體

那麼如何讓數據庫發出互信號?

感謝

+0

你能從INSERT觸發器執行一個進程嗎? – mellamokb

+0

嗯,是的,如果它安全地做,只是想知道什麼是更好的你建議或只寫入一個錶行,並每秒輪詢它 – tech74

+0

輪詢可能是最好的解決方案。 – mellamokb

回答

1

您是含糊的細節,但假設一個(或多個)線程正在做的插入和一個(或多個)線程需要通知您可能需要使用條件變量。基本上讀線程調用pthread_cond_wait並阻塞,直到插入線程成功寫入數據庫,然後調用pthread_cond_signal來喚醒被阻塞的讀線程。

如果其他程序或機制正在執行插入操作,則此答案不適用。

0

您可以爲該INSERT創建一個觸發器,這將爲您提供運行UDF(用戶定義函數)的機會。函數可以運行外部代碼,它可以使用pthread_cond_signal來喚醒程序。我不認爲建議寫這樣的東西,但這是可能的。