Tha*_*lia 4 c++ file-io boost boost-asio
我想异步写文件.我有一个带有一个函数的类,它接受一个向量和文件名,然后将它发送到文件中.这个函数可以从类外调用几千个时间.
我想要执行write async的原因是...调用者只能请求写入,然后不必担心它或等待写入完成.
我没有使用套接字,tcp ...
我正在研究boost :: asio,试图找到示例 - 我能找到的只是使用网络的例子:http: //liveworkspace.org/code/3R3RUd%240
boost :: asio async_read保证读取所有字节
和更多.
有人可以为文件i/o建议一个例子吗?
我的要求是否有意义?
我认为你想要做的就是完全没问题,假设你的IO操作足够复杂,以便只是为了实现异步实现的开销.我的简单建议看起来像这样(从旧问题复制):
#include <thread>
#include <functional>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
void io_operation(int parameter) {
//Your stuff
}
int main ( int argc, char* argv[] ) {
boost::asio::io_service io_service;
boost::asio::io_service::work work(io_service);
//Set up a thread pool taking asynchronically care of your orders
std::vector<std::thread> threadPool;
for(size_t t = 0; t < std::thread::hardware_concurrency(); t++){
threadPool.push_back(std::thread(boost::bind(&boost::asio::io_service::run, &io_service)));
}
//Post an IO-operation
io_service.post(std::bind(io_operation, 123));
//Join all threads at the end
io_service.stop();
for(std::thread& t : threadPool) {
t.join();
}
}
Run Code Online (Sandbox Code Playgroud)
这假设您可以使用C++11线程.此外,您应该知道,这不能确保只有一个线程正在写入特定文件.因此,你可能需要使用链,以确保调用特定的文件也不会以并行handeled.
| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |