CreateFileMapping 共享記憶體

2021-06-28 00:20:54 字數 1586 閱讀 1176

handle hfile,

dword flprotect,

dword dwmaximumsizehigh,

dword dwmaximumsizelow,

lpctstr lpname

);hfile: 共享檔案控制代碼,不建立共享檔案,為invalid_handle_value

flprotect: 保護選項,如果指定了hfile,則對檔案也有同樣的要求

page_readonly: 唯讀

page_readwrite:可讀可寫

page_writecopy:不支援

dwmaximumsizehigh: 共享記憶體大小高32位

dwmaximumsizelow:共享記憶體大小低32位

lpname:共享記憶體名

mapviewoffile:

lpvoid mapviewoffile(

dword dwdesiredaccess,

dword dwfileoffsethigh,

dword dwfileoffsetlow,

dword dwnumberofbytestomap

);

dwdesiredaccess: 訪問許可權

file_map_all_access: 讀、寫

file_map_read:讀

file_map_write:寫

dwfileoffsethigh: 訪問偏移量高32位

dwfileoffsetlow:訪問偏移量低32位

dwnumberofbytestomap: 共享檔案位元組數,設為0,則為整個檔案。

伺服器端

void sharedmemory()

// 釋放記憶體

unmapviewoffile(pcmap);

}

客戶端:

void testsharedmemory()

0, 0, 0);

cout << pcmap << endl;

// 通知主程式釋放

pcmap[0] = '1';

// 釋放記憶體

unmapviewoffile(pcmap);

}

除錯->視窗->記憶體

伺服器端:

void filesharedmemory()

null,

page_readwrite,

0,0,

text("mysharedmemory")

);0, 0, 0);

pcmap[0] = '0';

while (pcmap[0] == '0')

// 釋放記憶體

unmapviewoffile(pcmap);

closehandle(hfile);

}

客戶端不變。

執行緒範圍內共享資料

我們可以先用所學知識來寫乙個 public class threadscopesharedata start static class a static class b 如果光像上面這樣寫的話,那毫無疑問,肯定是有問題的,如下圖所示並沒有實現執行緒共享 此時就實現執行緒內共享資料了 public c...

RHCE 建立系統內共享目錄

建立乙個共享目錄 home admins 特性如下 home admins目錄的組所有權是adminuseradminuser組的成員對目錄有讀寫和執行的許可權。除此之外的其他所有使用者沒有任何許可權 root使用者能夠訪問系統中的所有檔案和目錄 在 home admins目錄中建立的檔案,其組所有...

執行緒範圍內共享資料

假設現在有個公共的變數data,有不同的執行緒都可以去操作它,如果在不同的執行緒對data操作完成後再去取這個data,那麼肯定會出現執行緒間的資料混亂問題,因為a執行緒在取data資料前可能b執行緒又對其進行了修改,下面寫個程式來說明一下該問題 public class threadscopesh...