回覆列表
  • 1 # 使用者6602652349876

    多執行緒的效果就是同一時間各個執行緒都在執行。

    加鎖不是給執行緒上鎖。

    pthread_mutex_lock(&qlock);表示嘗試去把qlock上鎖,它會先判斷qlock是否已經上鎖,如果已經上鎖這個執行緒就會停在這一步直到其他執行緒把鎖解開。它才繼續執行。

    所以程式碼中要麼是執行緒1先執行完後執行執行緒2,要麼就是執行緒2先執行,再執行執行緒1.而執行緒3一開始就執行了。

    互斥量mutex是用來給多執行緒之間的貢獻資源上鎖的。也就是同一個時間只允許一個執行緒去訪問該資源(資源:比如對檔案的寫操作)。

    現在來回答樓主的問題:

    不是隻要在pthread_mutex_lock(&qlock)與pthread_mutex_unlock(&qlock)之間的程式碼執行,其他的都不能介入嗎?

    其他的都不能介入,不是整個程序只執行這一個執行緒,其他執行緒都停住了。

    “不能介入“這個動作需要程式設計師自己設計來保證:好比前面提到的檔案讀寫操作。為了防止多個執行緒同時對檔案進行寫入操作,這就需要把資源上鎖了。

    如果只有執行緒1加鎖,那是不是這個鎖就沒有意義了呢?

    這個理解可以有

  • 中秋節和大豐收的關聯?
  • 爬五嶽寨需要多長時間?