atomic_int
int value(0)
vector<int> labels_size(label);
vector(int nSize):创建一个vector,元素个数为nSizeDifferences between default(int) vs int = 0
auto
size_t
std::lock_guard<std::mutex> lock(g_mutex);
1.
直接使用 std::mutex 的成員函式 lock/unlock 來上鎖是可以的,只是要注意 lock 要有對應的 unlock ,一旦沒有解鎖到程式很可能就會發生死鎖,
那有沒有比較智慧的寫法來避免這種忘記解鎖而照成死鎖的問題發生呢?
有的!答案就是配合 std::lock_guard 使用,學會用 std::lock_guard 就可以避免手動上鎖解鎖,進而減少在寫程式上出現死鎖的機會,
lock_guard 利用生命週期這概念來進行上鎖與解鎖,lock_guard 本身並不管理 mutex 的生命週期,也就是 lock_guard 生命週期結束不代表 mutex 生命週期也結束,
long tmpbool = (x >= 0 && x < width) && (y >= ymin && y < ymax);
if(__builtin_expect(tmpbool, 1)){
这个指令是gcc引入的,作用是允许程序员将最有可能执行的分支告诉编译器。这个指令的写法为:
__builtin_expect(EXP, N)
意思是:EXP==N的概率很大。
setprecision输出流对象设置浮点数精度。
MPI_Cart_coords 域划分
_mm_malloc对齐
为什么要使用_mm_malloc? (与_aligned_malloc,alligned_alloc或posix_memalign相对) - Thinbug