TEMPFILEOPTIONS

类型定义结构体tagTEMPFILEOPTIONSL_UINTuStructSize;L_TEMPFILEMODEuMode;L_UINTuFlags;L_UINTuMaxTotalMemSize;L_UINTuMaxMemSizePerFile;L_UINTuChunkMemSize;} TEMPFILEOPTIONS;

TEMPFILEOPTIONS结构控制了LEADTOOLS sdk使用的临时文件选项。TEMPFILEOPTIONS可与L_GetTempFileOptions而且L_SetTempFileOptions获取和设置临时文件选项。这些选项是全局的(所有线程使用相同的设置)。

成员

uStructSize

此结构的大小(以字节为单位),用于版本控制。将其设置为sizeof(TEMPFILEOPTIONS)。

以下成员是临时文件模式

uMode

值,该值指示临时文件是在磁盘上、内存中还是在磁盘和内存的组合中。可能取值为:

价值 意义
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。

uFlags

控制杂项选项的标志。可能取值为:

价值 意义
L_TEMPFILE_DUMPTODISKONCLOSE [0x0001]当临时内存文件关闭时,将它们转储到磁盘。默认情况下,该标志未设置,内存支持的临时文件保留在内存中。该标志仅在uMode为L_TEMPFILEMODE_DISKANDMEMORY时使用。

Temp文件大小阈值

以下值仅当“uMode”设置为“L_TEMPFILEMODE_DISKANDMEMORY”时使用。它们可以用来确定应该为临时文件使用多少内存。一般来说,小文件保存在内存中,而大文件被转储到磁盘。您可以为一个内存临时文件(uMaxMemSizePerFile)指定最大大小,也可以为所有内存临时文件(uMaxTotalMemSize)指定最大大小。

uMaxTotalMemSize

用于所有内存临时文件的最大内存量(以MB为单位),(累计)。

uMaxMemSizePerFile

单个内存临时文件使用的最大内存量(以MB为单位)。任何大于此数量的临时文件都将被转储到磁盘。

uChunkMemSize

每个内存块中的最大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);

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。