Linux,同時多個程式開啟檔案訪問並寫入,怎麼防止資料衝突,即有沒有程式可以實現排隊等候功能

2022-07-03 08:41:37 字數 1563 閱讀 8118

1樓:

你說的是多程序還是多執行緒?

如果是多執行緒,可以考慮引入互斥鎖(mutex,mutual exclusive lock)。

獲得鎖的執行緒可以完成「讀-修改-寫」的操作,然後釋放鎖給其它執行緒,沒有獲得鎖的執行緒只能等待而不能訪問共享資料,這樣「讀-修改-寫」三步操作組成乙個原子操作,要麼都執行,要麼都不執行,不會執行到中間被打斷,也不會在其它處理器上並行做這個操作。

mutex變數是非0即1的,可看作一種資源的可用數量,初始化時mutex是1,表示有乙個可用資源,加鎖時獲得該資源,將mutex減到0,表示不再有可用資源,解鎖時釋放該資源,將mutex重新加到1,表示又有了乙個可用資源。

注意避免死鎖就行了。

如果是多程序(多個不同的程式),可以考慮使用訊號量(semaphore),當然,也可用於同一程序的多執行緒。

真要具體講的話,非一兩句話可以了事,需要羅列**,否則太理論化了。建議樓主還是先在網上多看看吧。

2樓:匿名使用者

沒有,除非你把這個檔案當作乙個快取,然後加鎖輪流訪問。具體實現方法見大學教案:作業系統原理。

c#中,多個程式同時讀寫同乙個檔案時,如何避免檔案鎖定,可以採用什麼方法?

3樓:匿名使用者

你的意思是不是避免檔案被死鎖呀?如果是,那麼在給檔案加讀鎖或寫鎖的時候給每個鎖加個時間限制就成了吧。如果哪個鎖超時就自動失去許可權、檔案解鎖。當然,鎖的分配方式也要考慮一下。

4樓:匿名使用者

file讀取檔案有乙個方法是共享方式開啟檔案,可以多個程式同時讀書,當然lock也不無道理,看你自已怎麼選擇了

在c語言中,怎麼對乙個fopen開啟的file檔案加鎖啊?防止同時被讀寫,不要linux的方法 10

5樓:匿名使用者

用下面的其中乙個函式:

flock();

lockf();

fcntl();

6樓:

file lock並不是c庫自帶的功能,與系統有關係的

7樓:匿名使用者

是在windows下? 用 lockfile或lockfileex

參見msdn.

linux怎樣把多條命令寫在乙個可執行檔案中

8樓:匿名使用者

你是指指令碼嗎?

寫指令碼的格式

vim /root/command.sh (sh字尾不可更改)第一行寫入如下內容

#!/bin/bash

往下直接寫入你要執行的命令

注意每執行一條命令要用一行表示

j**a中可以允許多個流同時對檔案進行操作嗎?我有段**出現問題,就是同時對乙個檔案建立讀取流和寫入流 5

9樓:無水傳說

一般來說。。寫操作會設定成執行緒同步的

10樓:匿名使用者

這個肯定是不可以的..

pdf檔案用什麼程式開啟

adobe reader 是一款可以用來檢視和列印 adobe 便攜文件格式 pdf 檔案。您可以在大多數主要的作業系統上檢視通過 adobe acrobat adobe photoshop album 2.0 以及更多應用程式建立的 adobe pdf 檔案。最新版本的7.0提高了pdf檔案開啟的...

linux下,怎樣同時修改目錄下所有檔案的建立時間

在linux中,檔案沒有 建立時間 這個說法。linux中的檔案的時間屬性只有三個 atime access time mtime modified time ctime change time 不過,有時有人把ctime理解為create time 建立時間 這是不對的,為什麼呢?因為,我們知道乙...

win10系統怎麼同時重新命名多個檔案

如下的方法請參考 具體如下 1 使用alt a選中所有需要重新命名的檔案,按下f2,輸入需要修改的名稱,然後按下回車鍵,所有檔案的名字都會自動變為之前所輸入的名稱,並有序的排列起來 2 接下來小編教大家把所有檔案加上乙個字首。在該資料夾中單擊右鍵,選擇 新建 文字文件,並開啟,將下面面這段話輸進去 ...