Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 解析计数器是多线程的吗?_Ios_Multithreading_Parse Platform_Increment_Decrement - Fatal编程技术网

Ios 解析计数器是多线程的吗?

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]; 如果多人同时尝试更改“分数”,那么在所有通

我正在创建一个应用程序,根据用户的响应将值增加/减少1或2。如果多个用户同时尝试更改该值,它是否正常工作?我的示例代码是:

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。