Ios 解析计数器是多线程的吗?
我正在创建一个应用程序,根据用户的响应将值增加/减少1或2。如果多个用户同时尝试更改该值,它是否正常工作?我的示例代码是:Ios 解析计数器是多线程的吗?,ios,multithreading,parse-platform,increment,decrement,Ios,Multithreading,Parse Platform,Increment,Decrement,我正在创建一个应用程序,根据用户的响应将值增加/减少1或2。如果多个用户同时尝试更改该值,它是否正常工作?我的示例代码是: PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"]; [gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"]; [gameScore saveInBackground]; 如果多人同时尝试更改“分数”,那么在所有通
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
[gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"];
[gameScore saveInBackground];
如果多人同时尝试更改“分数”,那么在所有通话结束后,分数是否准确?不,这不起作用。如果您在代码示例中如上所述显式设置新分数,则存在一个竞争条件,其中一个客户端可能不知道另一个客户端所做的更改 要解决这个问题,可以使用“增量”函数。这将向服务器发送一个命令,以原子方式将服务器值增加一定量,因此客户机实际上不需要关心他们发送的值是多少——他们只是将其增加一定量。服务器处理请求的原子性质,并避免您在显式设置分数时看到的竞争条件
[gameScore incrementKey:@"score"];
[gameScore saveInBackground];
或者如果你想增加超过1
[gameScore incrementKey:@"score" byAmount:@(2)];
[gameScore saveInBackground];
您好,我只是想知道您是否已经对此进行了测试,或者是否有相关的来源?是的,请查看解析文档中对象部分的标题“计数器”。它声明incrementKey调用是原子的。如果你发现它不起作用,那么你应该向他们提交一个bug。