我需要在Windows x64系统上使用32位应用程序的IFilter接口.这对.doc文件很容易,因为offfilt.dll支持两种构建类型.但是,我还需要从.docx和其他文件类型中获取纯文本.解决方案首先是安装Microsoft Filter Pack.但是,只安装x64版本...这意味着我的32位应用程序无法使用它们.它们在32位Windows下运行良好.
有没有人找到解决这个问题的方法?
我想确认我的方法是非常快速的,适用于多数读者的跨平台保护,使用C++的单一编写器方法.它有利于编写者,当他们输入所有当前线程时,允许完成,但任何类型的所有新线程都必须等待.这两个功能的反面应该是显而易见的.
我已经完成的读数表明,boost shared_mutex和其他类型的rwlock没有很好地实现,应该避免.事实上,shared_mutex不会使它成为C++ 0x我接受它.看到Anthony Williams的回复.
似乎甚至可以写入整数,如果正确对齐则不需要锁定任何类型.那里有很多文章,关于这个主题的任何好的阅读,所以我不必从谷壳中分拣小麦?
void AquireReadLock(void)
{
mutex::enter();
if(READ_STATE == true)
{
iReaders++;
mutex::leave();
return;
}
else
{
mutex::leave();
sleep(1);
AquireReadLock();
return;
}
}
void AquireWriteLock(void)
{
mutex::enter();
READ_STATE = false;
if (iReaders != 0)
{
mutex::leave();
sleep(1);
AquireWriteLock();
return;
}
else
{
mutex::leave();
return;
}
}
Run Code Online (Sandbox Code Playgroud)