使用屏障 (barrier) 操作可以解决写入访问顺序内存模型问题。屏障 (barrier) 操作还可提供远程内存访问错误检测功能。
屏障 (barrier) 机制由以下操作组成:
初始化
打开
关闭
排序
打开和关闭操作定义了错误检测和排序的时间间隔。通过初始化操作,可以为每个导入的段创建屏障 (barrier) 并指定屏障 (barrier) 类型。当前支持的唯一屏障 (barrier) 类型针对每个段具有一个时间间隔范围。请使用类型参数值 RSM_BAR_DEFAULT。
成功执行关闭操作可保证成功完成所涉及的访问操作,这些操作在屏障 (barrier) 打开操作和屏障 (barrier) 关闭操作之间进行。在屏障 (barrier) 打开操作之后直到屏障 (barrier) 关闭操作之前,不会报告单个数据访问操作(读取和写入)故障。
要在屏障 (barrier) 范围内强制设置特定的写入完成顺序,请使用显式屏障 (barrier) 排序操作。在屏障 (barrier) 排序操作之前发出的写入操作会先于在屏障 (barrier) 排序操作之后发出的操作完成。给定屏障 (barrier) 范围内的写入操作会根据其他屏障 (barrier) 范围进行排序。
int rsm_memseg_import_init_barrier(rsm_memseg_import_handle_t im_memseg, rsm_barrier_type_t type, rsmapi_barrier_t *barrier);目前,RSM_BAR_DEFAULT 是唯一支持的类型。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
屏障 (barrier) 指针无效
内存不足
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
屏障 (barrier) 指针无效
此函数可用于关闭屏障 (barrier) 并刷新所有存储缓冲区。此调用假设如果调用 rsm_memseg_import_close_barrier() 失败,则调用进程将重试自上次 rsm_memseg_import_open_barrier 调用以来的所有远程内存操作。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
屏障 (barrier) 指针无效
未初始化屏障 (barrier)
未打开屏障 (barrier)
内存访问错误
连接异常中止
此函数可用于刷新所有存储缓冲区。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
屏障 (barrier) 指针无效
未初始化屏障 (barrier)
未打开屏障 (barrier)
内存访问错误
连接异常中止
此函数可用于取消分配所有屏障 (barrier) 资源。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
屏障 (barrier) 指针无效
此函数支持可用于 put 例程的可选显式屏障 (barrier) 范围。两种有效的屏障 (barrier) 模式为 RSM_BARRIER_MODE_EXPLICIT 和 RSM_BARRIER_MODE_IMPLICIT。屏障 (barrier) 模式的缺省值为 RSM_BARRIER_MODE_IMPLICIT。在隐式模式下,隐式屏障 (barrier) 打开和屏障 (barrier) 关闭会应用于每个 put 操作。将屏障 (barrier) 模式值设置为 RSM_BARRIER_MODE_EXPLICIT 之前,请使用 rsm_memseg_import_init_barrier 例程针对导入的段 im_memseg 初始化屏障 (barrier)。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
此函数可用于获取 put 例程中屏障 (barrier) 范围设置的当前模式值。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效。