因此,我在Swift 3中编写了一些代码,作为一个CLI来练习使用Grand Central Dispatch。
这样做的想法是,有三个数组,每个数组填充100000000个值。然后,我有一个函数来总结数组的所有数字并打印出来。然后还有两个函数来对这些数组的和进行计时。一个在每个数组上运行三次求和函数。另一个在它自己的异步上运行每个数组的sum函数(线程?,调度?,不确定在这里使用哪个单词)。下面是代码:
import Foundation
func sum(array a: [Int]) {
var suma = 0
for n in a {
suma += n
}
在我的iOS应用程序中,我在后台线程上运行一个计算密集型任务,如下所示:
// f is called on the main thread
- (void) f {
[self performSelectorInBackground:@selector(doCalcs) withObject:nil];
}
- (void) doCalcs {
int r = expensiveFunction();
[self performSelectorOnMainThread:@selector(displayResults:) withObject:@(r) waitU
编辑
我阅读了一些关于块和快速枚举以及GCD之类的文章。@Bbum写了许多关于GCD和块的文章,他说块枚举方法总是和快速枚举方法一样快或更快。你可以阅读他的推理。
虽然这是一场引人入胜、充满智慧的对话,但我同意一些人的说法,那就是,这真的取决于手头的任务。
我有一些任务要完成,我需要他们快速,廉价,高效地完成。苹果为提供了许多选项,用于枚举数组,但我不确定该选择哪一个。
快速枚举
for (id obj in array)
{
/* Do something with |obj|. */
}
非并发块枚举
[array enumerateObjectsUsingBlock: ^(id
这是我的源代码,我试图把它传递给最不常见的乘数任务:
#include <iostream>
#include "algorithm"
using namespace std;
using ll = long long;
using ld = long double;
long long gcd(int a, int b) {
while (b > 0) {
a %= b;
swap(a, b);
}
return a;
}
long long lcm(int a, int b) {
ret
我读到谷歌上出现的类似文章,他们都没有解决这个问题,所以我再问一次。
我想为C++文件创建一个片段,用下面的代码行初始化一个新文件
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long l;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<int,pair<int,int> > tii;
typedef vector<pair<i
我研究过GCD和线程安全。在苹果文档中,GCD是线程安全的,这意味着多线程可以访问.我学到了线程安全的含义,每当多个线程访问某个对象时,它总是给出相同的结果。
我认为线程安全和GCD的线程安全的含义是不一样的,因为我测试了一些案例,下面写成0到9999。
当我在几次以下执行代码时,“某样东西”的值是不一样的。如果GCD是线程安全的,为什么“某样东西”的值不一样?
我真的很困惑..。你能帮我一下吗?我真的想要掌握线程安全!
class Something {
var n = 0
}
class ViewController: UIViewController {
let some