DTHREADS初探(Efficient Deterministic Multithreading)

| 分类 Program  | 标签 multithread 

刚进入新公司就遇到一个有挑战性的问题,多线程的确定性。公司的代码使用了多线程,但是多线程编程有一个问题就是不确定性,经常出现了问题,没有办法进行debug。于是考虑使用DTHREADS代替pthread。

DTHREADS是一个高效的可确定的多线程模块,使用clone子进程的方式模拟多线程。DTHREADS的设计可以参考dthread-sosp11.pdf这篇文档。

http://plasma.cs.umass.edu/emery/dthreads上也有一些对DTHREADS的介绍。你可以从github上repo DTHREADS代码。

需要注意的是,DTHREADS使用clone()创建子进程,因此”Dthreads currently only supports Linux/x86 platforms.”

使用DTHREADS的时候需要将libdthreads.so放到你的link查找目录下,然后在link选项里面将-lpthread 更改为 -ldthread就可以了。

Limitations:

  1. Dthreads currently only supports Linux/x86 platforms.
  2. Dthreads 使用创建子进程的方法模拟多线程,使用多份堆数据拷贝保证数据一致性,因此如果你的程序使用的内存过大,使用DHTREADS就有可能耗尽内存。

上一篇     下一篇