类型定义结构体tagTEMPFILEOPTIONS
{
L_UINTuStructSize;
L_TEMPFILEMODEuMode;
L_UINTuFlags;
L_UINTuMaxTotalMemSize;
L_UINTuMaxMemSizePerFile;
L_UINTuChunkMemSize;
} TEMPFILEOPTIONS;
的TEMPFILEOPTIONS结构控制了LEADTOOLS sdk使用的临时文件选项。TEMPFILEOPTIONS可与L_GetTempFileOptions而且L_SetTempFileOptions获取和设置临时文件选项。这些选项是全局的(所有线程使用相同的设置)。
此结构的大小(以字节为单位),用于版本控制。将其设置为sizeof(TEMPFILEOPTIONS)。
值,该值指示临时文件是在磁盘上、内存中还是在磁盘和内存的组合中。可能取值为:
价值 | 意义 |
---|---|
L_TEMPFILEMODE_DEFAULT | 让LEADTOOLS选择默认模式(行为可以从一个版本改变到另一个版本)。目前,L_TEMPFILEMODE_DEFAULT与L_TEMPFILEMODE_DISKANDMEMORY相同。 |
L_TEMPFILEMODE_DISK | [1]只备份磁盘,不使用内存备份临时文件。 |
L_TEMPFILEMODE_DISKANDMEMORY | 小的临时文件用内存,大的临时文件用磁盘。 |
L_TEMPFILEMODE_MEMORY | [3]禁用磁盘,所有临时文件都应该创建在内存中。如果某些特性需要磁盘上的临时文件,它们可能会失败。失败可能是内存不足错误代码或ERROR_TEMP_FILE_DISK_DISABLED。 |
控制杂项选项的标志。可能取值为:
价值 | 意义 |
---|---|
L_TEMPFILE_DUMPTODISKONCLOSE | [0x0001]当临时内存文件关闭时,将它们转储到磁盘。默认情况下,该标志未设置,内存支持的临时文件保留在内存中。该标志仅在uMode为L_TEMPFILEMODE_DISKANDMEMORY时使用。 |
以下值仅当“uMode”设置为“L_TEMPFILEMODE_DISKANDMEMORY”时使用。它们可以用来确定应该为临时文件使用多少内存。一般来说,小文件保存在内存中,而大文件被转储到磁盘。您可以为一个内存临时文件(uMaxMemSizePerFile)指定最大大小,也可以为所有内存临时文件(uMaxTotalMemSize)指定最大大小。
用于所有内存临时文件的最大内存量(以MB为单位),(累计)。
单个内存临时文件使用的最大内存量(以MB为单位)。任何大于此数量的临时文件都将被转储到磁盘。
每个内存块中的最大MB数。大于此值的内存临时文件将被分割成几个块。例如,如果这个值设置为8,一个20MB的临时文件将被分成3个块:8 + 8 + 4 MB。这对于非常大的内存临时文件非常有用,因为操作系统很难分配非常大的内存块。例如,分配一个800MB的内存块可能会失败,但分配50个16MB的内存块可能会成功。
LEADTOOLS有时需要使用临时文件进行某些操作。下面以临时文件为例:
对临时文件的精细控制只能在LEADTOOLS版本20或更高版本。在版本19或更早的版本中,所有临时文件都保存在磁盘上。
默认情况下,LEADTOOLS将小的临时文件保存在内存中,将大的临时文件保存在磁盘上。但是可以指定所有临时文件都应该在磁盘上(uMode = L_TEMPFILEMODE_DISK),或者所有临时文件都应该保存在内存中(uMode = L_TEMPFILEMODE_MEMORY)。
使用内存临时文件模式的最常见原因是在云应用程序中。在某些云环境中,磁盘访问比内存更昂贵:在这种情况下,只使用内存的临时文件模式可能更有意义。
如果将uMode设置为L_TEMPFILEMODE_DISK,则无法创建磁盘位图,并且平铺位图中的磁贴将位于内存中。在这种情况下,某些操作将失败;要么是内存不足错误代码,要么是ERROR_TEMP_FILE_DISK_DISABLED[-1853]错误代码。
如果启用了磁盘临时文件,则它们将存储在所设置的文件夹中L_SetTempDirectory.该规则的例外情况如下:
一些将此结构作为参数的函数要求在函数调用之前对结构进行初始化。要初始化结构,将uStructSize成员设置为结构的总大小,以字节为单位(将uStructSize设置为sizeof(TEMPFILEOPTIONS))。不需要初始化结构的函数将把结构的总大小(以字节为单位)作为附加的函数形参。
uMaxTotalMemSize, uMaxMemSizePerFile和uChunkMemSize阈值仅在“磁盘和内存”模式下使用(如果uMode为L_TEMPFILEMODE_DISKANDMEMORY)。否则它们就会被忽略。一般情况下,应存在以下关系:
如果uMaxMemSizePerFile <= uChunkMemSize,那么所有内存临时文件将被保存为一个块。如果uMaxTotalMemSize <= uMaxMemSizePerFile,则一个临时文件的最大大小将减少到uMaxTotalMemSize。
下面的代码显示了如何切换到内存模式:
TEMPFILEOPTIONS TEMPFILEOPTIONS;
如果(L_GetTempFileOptions (&tempFileOptions运算符(tempfileoptions) == success)
{
tempFileOptions。uMode= L_TEMPFILEMODE_MEMORY;
L_SetTempFileOptions (&tempFileOptions);
L_TEMPFILEMODE uMode = L_GetTempFileMode();
assert(uMode == L_TEMPFILEMODE_MEMORY);
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。