多執行緒中使用mktime和setenv函式

2021-07-03 12:26:47 字數 778 閱讀 3592

在編寫ats外掛程式的過程中,發現使用mktime會偶爾出現段錯誤, 經過網上調研,發現mktime等函式不是執行緒安全的, 於是編寫下面的**進行測試.

注意加鎖和不加鎖區別很大, 在mktime中使用多執行緒, 加上互斥鎖就沒有問題.

//gcc -g mktime_multithread.c -o mktime_multithread -lpthread -std=c99

//#include #include #include #include #include #include pthread_mutex_t mutex;

void* test_setenv(void *arg)

; for (int i = 0; i < 10000; i++)

return null;

}void* test_mktime(void* arg)

return null;

}int main(int argc, char* argv)

; pthread_create(&pt[0], null, test_setenv, null);

pthread_create(&pt[1], null, test_mktime, null);

pthread_join(pt[0], null);

pthread_join(pt[1], null);

pthread_mutex_destroy(&mutex);

return 0;

}

參考文獻

[1].

c 中使用多執行緒

using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using system.data using system.threa...

c 中使用多執行緒

using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using system.data using system.threa...

Delphi中使用多執行緒

這些天在indy的阻塞式socket模型的強迫下,開始在delphi中使用多執行緒。總結了一些經驗,儘管非常膚淺 1 對於vcl的控制項 大部分vcl的控制項的方法和屬性是不能保證執行緒安全的。我粗淺的理解執行緒安全為如果這個函式同時被兩個執行緒呼叫時,由於內部的指令不能保證按順序 即中間插入其他執...