目錄
boos的安裝(windows)
2、解壓到本地
3、編譯boost
4、vs工程屬性配置
boost共享記憶體封裝
標頭檔案cpp檔案 例項
解壓後資料夾下有個bootstrap.bat指令碼檔案
①開啟cmd,進入解壓好的boost目錄,執行bootstrap.bat,此時會生成b2.exe
②在cmd中執行.\b2.exe,開始編譯,大約耗時10分鐘。b2.exe會根據電腦當前安裝的virtual studio版本,自動生成lib庫檔案,本人安裝的vs2013,所以生成的是vc120版本。
①新增標頭檔案路徑
②新增lib檔案路徑
注意是*\stage\lib,不是*\libs
到此安裝結束,boost可以正常使用了,boos相關開發基礎介紹詳見
本文只介紹我簡單封裝的乙個boost共享記憶體類
#pragma once
#include #include #include #include #include #include "string"
typedef unsigned char uchar;
using namespace std;
using namespace boost::interprocess;
class cmyboostsharedmemory
;
#include "myboostsharedmemory.h"
#include cmyboostsharedmemory::cmyboostsharedmemory()
cmyboostsharedmemory::~cmyboostsharedmemory()
int cmyboostsharedmemory::init(std::string strmemname, std::string strmutexname, int nsize)
named_mutex::remove(m_strmutexname.c_str());
m_nbuffersize = nsize + 1;//+1的標誌位,0表示無資料,1表示有資料
m_strmemname = strmemname;
m_strmutexname = strmutexname;
m_shmmanager = shared_memory_object(boost::interprocess::open_or_create, strmemname.c_str(), read_write);
m_mtx = new named_mutex(boost::interprocess::open_or_create, m_strmutexname.c_str());
m_mtx->unlock();
m_shmmanager.truncate(m_nbuffersize);
memset(m_region.get_address(), 0, m_region.get_size());
m_bisinit = true;
return 0;
}int cmyboostsharedmemory::release()
return 1;
}int cmyboostsharedmemory::read(uchar* udata, int nsize, bool biswait)
char bz[1];
int ret = 0;
while (true)
else
std::this_thread::sleep_for(std::chrono::milliseconds(5));
} }
return ret;
}int cmyboostsharedmemory::write(uchar* udata, int nsize)
m_mtx->lock();
memset(m_region.get_address(), 1, 1);//標誌位置1
memcpy((char*)m_region.get_address()+1, udata, nsize);
m_mtx->unlock();
return 0;
}
int nsize = 1024;
cmyboostsharedmemory sm;
char addr[256] = ;
char mtx[256] = ;
sprintf_s(addr, "addr_name", 1);
sprintf_s(mtx, "mtx_name", 1);
sm.init(addr, mtx, 1024);
char msg = "hello world";
sm.write(msg,strlen(msg));
char buff[1024] = ;
s.read(buff,1024);
printf(buff);
共享記憶體的使用
http download1.csdn.net down3 20070529 29183222619.chttp download1.csdn.net down3 20070529 29183246962.chttp download1.csdn.net down3 20070529 2918324...
共享記憶體的使用
共享記憶體mmap使用 date tue apr 8 14 53 43 cst 2014 include extern c using namespace std define sem file sem lock int main int argc,char argv 開啟訊號量 int count...
boost 共享陣列
1 shared array與shared ptr很相似,只不過其實專門提供對陣列的包裝。但是經過測試,其實shared ptr也可以提供對陣列的包裝,而且不複雜。2 特點 1 共享陣列必須通過動態分配的陣列的位址來初始化 2 共享陣列的行為類似於共享指標,關鍵不同在於共享陣列在析構時,預設使用de...