我正在使用 Linux(带有 libc-2.12.so 的 CentOS 6.3 发行版)。
我想知道C库函数time()
是否可以在多线程环境下使用localtime()
。mktime()
仅举一个例子(不一定是我的项目代码):
#include <stdio.h>
#include <time.h>
int main()
{
time_t timep;
struct tm *p;
for (int i = 0; i < 1000; ++i)
{
time(&timep);
printf("time() : %d \n", timep);
p = localtime(&timep);
timep = mktime(p);
printf("time()->localtime()->mktime():%d\n", timep);
}
return 0;
}
如果我用 OpenMP 包装上述代码会怎样?也就是把它放在多线程环境下。
#include <stdio.h>
#include <time.h>
#include <omp.h>
int main()
{
time_t timep;
struct tm *p;
#pragma omp parallel for
for (int i = 0; i < 1000; ++i)
{
time(&timep);
printf("time() : %d \n", timep);
p = localtime(&timep);
timep = mktime(p);
printf("time()->localtime()->mktime():%d\n", timep);
}
return 0;
}