看到这则信息,下面有人举了几个前苏联的笑话,感觉很有意思,于是就去找了几个,笑得肚子疼。

有个人在红场散发传单,被克格勃逮住了。那人辩解,我发的都是白纸。克格勃冷笑道,你以为我不知道你什么意思?

在苏共二十三次代表大会上,勃列日涅夫作报告,他问:“我们这里有没有敌人?”一个人回答:“有一个,他坐在第四排第十八号位子上。”勃问:“为什么他是敌人?”回答:“列宁说过敌人是不会打瞌睡的,我发现全场只有他一个人没有打瞌睡!”

“在苏联是否可以存在两党制?”“不,不可能,因为我们养不起。”

苏联特工对美国特工夸口道:“我们知道你们国家所有核导弹发射井的位置。”美国特工说:“那又有什么,我们知道你们未来20年全体政治局委员名单。”

一天戈尔巴乔夫到一个农场视察,看到有几头猪,就到猪旁边拍了一张照片。随行人员在照片上写上:戈尔巴乔夫和猪在一起,但又感到不妥。于是改成:猪和戈尔巴乔夫在一起,可还是感觉不对。最后把照片上的字改成:左起第三位是戈尔巴乔夫。

一个健康的社会不该只有一种声音。

哪里也去不了,就不停地刷屏。

医护人员在医院休息室嚎啕大哭,火化工人在殡仪馆唱歌给自己打气,主妇在阳台上绝望地哭喊救命,电话里快要崩溃的发自党性的咆哮…

房间的门被焊被锁被堵,外出的车队在高速上排成长龙,为了活命想偷渡到隔壁省却发现河对岸一排一排的人在围追堵截…

和新闻里的完全不一样。

我听到了两种声音。

Parallel Loops

未知循环次数,利用了指针的for循环
每一个迭代当作一个子任务,finish约束整个循环

1
2
3
4
finish {
for (p = head; p != null ; p = p.next)
async compute(p);
}

已知循环次数n,可以利用forall

1
2
3
// vector addition
forall (i : [0:n-1])
a[i] = b[i] + c[i]

利用 Java streams,上述功能有更加简洁的表达方式

1
2
...
a = IntStream.rangeClosed(0, N-1).parallel().toArray(i -> b[i] + c[i]);
阅读全文 »

Future Tasks

future tasks

  • tasks with return values

future objects(also known as promise objects

  • a “handle” for accessing a task’s return value

  • 两个主要操作:

    • Assignment,形式如下

      1
      2
      3
      A = future {
      ⟨ task-with-return-value ⟩
      }

      future object 被限制为只能一次赋值(_single assignment_,类似于 final 变量

      future task 完成后 future object 就不能修改了

    • Blocking read

      • A.get() 读操作会等待,直到与 future object 关联的 task 完成,将该任务的返回值作为 A.get() 的值
      • A.get() 之后的任何 statement S 开始执行时与 A 关联的任务已经完成
阅读全文 »
0%