我有以下代码:
int main ()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
for (int i = 0; i < 3; i++) {
cout << i << " ";
printf("%d ", i);
}
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码的预期输出为:
0 0 1 1 2 2
但是,相反,它打印:
0 1 2
0 1 2
Run Code Online (Sandbox Code Playgroud)
这个问题发生在GNU G ++ 4.9.2编译器中
我有以下代码:
func foo() {
var sum = 0
var pendingElements = 10
for i in 0 ..< 10 {
proccessElementAsync(i) { value in
sum += value
pendingElements--
if pendingElements == 0 {
println(sum)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,函数proccessElementAsync
,如其名称所示,异步处理其输入参数,并在完成时调用其相应的完成处理程序.
这种方法的不便之处在于,由于变量pendingElements
是通过多个线程访问的,因此该语句if pendingElements == 0
可能永远不会为true.
在C#中,我们可以做类似的事情:
Object lockObject = new Object();
...
lock (lockObject) {
pendingElements--;
if (pendingElements == 0) {
Console.WriteLine(sum);
}
}
Run Code Online (Sandbox Code Playgroud)
这确保了只能为一个线程同时访问此变量.有没有办法在Swift中获得相同的行为?
在手表OS 1中,我能够在WatchExtension中创建自定义视图的实例.我不是在谈论它,我的意思是只创建一个视图实例,然后创建一个UIImage
包含其内容的实例.
现在,在OS 2中,我无法访问UIView
WatchExtension,即使我已经导入了UIKit
框架.
有没有办法UIView
从WatchExtension 创建一个实例?
Xamarin的Realm文档说:
Realm将自动执行无需处理即可完成的迁移,例如添加和删除类或从类添加和删除属性。对于更复杂的更改,需要适当的迁移。我们尚无此API,但已计划并即将添加。
但是,即使只是在模型中添加新字段,应用程序也会因需要迁移而崩溃。
我的问题是:如何利用自动执行的迁移?