【问题标题】:Semaphore Suggestion in Swift 4 and FirebaseSwift 4 和 Firebase 中的信号量建议
【发布时间】:2018-06-08 10:58:18
【问题描述】:

我目前正在尝试决定如何在我的 iOS 应用程序中实现信号量。我有一个表格视图,其中每一行代表一首歌。每行都包含该歌曲收到的投票数和一个向上和向下的箭头来投票。每首歌曲都有自己的计数,因此歌曲 1 可以有 0 票,而歌曲 2 可以有 5 票。目前,如果多人同时对歌曲 1 进行投票,我会遇到问题,因为数字没有正确更新。

我正计划使用信号量来解决这个问题。但是,我希望表视图中的每一行都有一个信号量。这可能吗?有关如何更好地解决此问题的任何建议?

【问题讨论】:

  • 只需使用并发队列并从队列中更新数据库。为什么每行需要 1 个信号量?多人同时投票是什么意思?
  • 您好,感谢您的回复!如果有 1000 首歌曲和 1000 人投票,创建一个信号量将有 999 人等待,即使他们都在为不同的歌曲投票。对吗?

标签: ios swift firebase-realtime-database swift4


【解决方案1】:

如果有 1000 首歌曲和 1000 人投票,则创建一个信号量 将有 999 人等待,即使他们都投票不同 歌曲。对吗?

如果您有 100 万人,您将有 100 万个信号量来同步您的数据库?考虑缩放..

您需要为您的数据库使用Transaction 操作。见这里:https://firebase.google.com/docs/database/ios/read-and-write#save_data_as_transactions

上面的示例似乎与您尝试做的事情相同(用星号和增量计数器投票)。

无论如何,您无法将远程数据库与客户端上的信号量同步。除非我弄错了并且您的数据库是本地的。在任何情况下,事务操作都是可行的方法。

【讨论】:

  • 这正是我想要的。不太清楚我是怎么错过的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2012-11-05
  • 1970-01-01
  • 2017-08-31
  • 2018-10-03
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多