【问题标题】:Converting a single user application to a multi user application将单用户应用程序转换为多用户应用程序
【发布时间】:2013-05-22 06:31:11
【问题描述】:

我正在开发一个当前为单用户的遗留 C 应用程序。我想修改它,使其成为多用户。

当前应用程序使用用户权限将相关数据(针对当前用户)加载到共享内存中。我想在共享内存中实现类似字典的结构,以便使用唯一的用户键存储相关数据 - 但是,天真的字典结构将导致字典中保存的数据被复制,因为所有用户共享相同的数据,但是仅允许根据其角色/权限对数据进行受限“查看”。

有人能建议一种数据结构,它既能提供字典的“查找”行为,又能避免“幼稚”字典不可避免地导致数据的重复性?

注意:我的应用程序是 C 语言,所以我不能使用类,我需要一个可以用 C 语言实现并存储在共享内存中的数据结构。

【问题讨论】:

    标签: c data-structures shared-memory


    【解决方案1】:

    为它的条目创建一个全局字典和用户特定的索引。

    【讨论】:

    • 我可能在这里遗漏了一些东西;我看不出全局字典方法如何避免重复数据问题 - 你能澄清一下吗?谢谢。
    • @HomunculusReticulli:插入功能应该检查要插入的数据是否已经在dic中。
    • 好的,但这引入了两个“问题”:1我需要实现一种机制来“重新加入”从字典中读取的数据2 由于读取时“重新加入数据”而导致的性能开销。目前,该应用程序的速度非常快,因为它直接为一位用户设置了数据共享内存。我想保持那个性能水平(尽可能接近)
    • @HomunculusReticulli:要么加快速度要么减少数据冗余。
    【解决方案2】:

    在 Linux 中,系统调用 unshare 用于实现多用户支持。

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 2016-05-26
      • 1970-01-01
      • 2013-02-08
      • 2019-09-04
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2011-10-24
      相关资源
      最近更新 更多