VxWorks 中timespec这个结构体,如果用clock_gettime()来获取tv_sec,tv_nsec,得到的数值代表啥意思啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VxWorks 中timespec这个结构体,如果用clock_gettime()来获取tv_sec,tv_nsec,得到的数值代表啥意思啊?相关的知识,希望对你有一定的参考价值。

Int clock_gettime(clockid_t clock_id,struct timespec *tp);/*取时钟时间*/
Int clock_settime(clockid_t clock_id,const struct timespec *tp);/*设置时钟时间*/

和时间有关的函数通过timespec数据结构作为入参或者返回值,timespec成为时间规格。

Struct timespec

Time_t tv_sec; /*秒*/

Long tv_nsec;/*纳秒*/

参考技术A 不是有注释吗。tv_sec代表相应时间的秒计数的值;tv_nsec则表示纳秒的计数的值。
晕。是要这个答案吗?

Atcoder Grand Contest 037C(贪心,优先队列,思维)

#define HAVE_STRUCT_TIMESPEC//编译器中time.h和phread.h头文件中timespec结构体重名,故加此行
#include<bits/stdc++.h>
using namespace std;
int a[200007],b[2000007];
priority_queue<pair<int,int> >q;
int n;
int mi(int x)
return x==1?n:x-1;

int pl(int x)
return x==n?1:x+1;

int main()
cin>>n;
for(int i=1;i<=n;++i)
cin>>a[i];
for(int i=1;i<=n;++i)
cin>>b[i];
q.push(b[i],i);

long long ans=0;
while(!q.empty())
int i=q.top().second;
q.pop();
if(b[i]==a[i])
continue;
if(a[i]>b[i]-b[mi(i)]-b[pl(i)])//如果a[i]>b[i]-b[mi(i)]-b[pl(i)],那么a[i]加上已经等于b[i-1]的a[i-1]和已经等于b[i+1]的a[i+1]就会超过b[i],较小的a[i]会先变成b[i],明显是要小的b[i]先满足题意才能大的b[i]后满足题意,所以如果大的b[i],a[i]+b[i-1]+b[i+1]相加都比b[i]大,那么a[i]就大的无法得到了
return puts("-1"),0;
int tmp=b[mi(i)]+b[pl(i)];
int tot=b[i]-a[i];//tot是还需要加上多少才能让a[i]变成b[i]
ans+=tot/tmp;//tmp是每次能加上的最大值,这样贪心策略最优
tot%=tmp;//tot保留余数
b[i]=a[i]+tot;//b[i]变成一个小的数字,放在优先队列里排序,可以让i-1和i+1在变化的时候用到它,它是a[i]变成原来b[i]的一个中间值
if(a[i]>b[i])
return puts("-1"),0;
if(a[i]!=b[i])
q.push(b[i],i);//扔进队列等待处理中间值

cout<<ans;
return 0;

以上是关于VxWorks 中timespec这个结构体,如果用clock_gettime()来获取tv_sec,tv_nsec,得到的数值代表啥意思啊?的主要内容,如果未能解决你的问题,请参考以下文章

VxWorks驱动移植至SylixOS总结

如何避免 VxWorks 中条件变量中的竞争条件

Atcoder Grand Contest 037C(贪心,优先队列,思维)

如果我要在一个文件中调用另外一个文件数组结构体的值,并且这个数组结构体还有一个数组结构体,这怎么办

结构体成员的引用方法

c语言数据结构中结构体定义问题