shell多线程 跑C语言随机数代码

获取秒级,毫秒级和纳秒级的当前时间的代码:


/// 获取秒级,毫秒级和纳秒级的当前时间

#include
#include
#include
using namespace std;
int main()
{
  struct timeval time_now = {0};
  unsigned int time_sec = 0;
  unsigned int time_mil = 0;
  unsigned int time_mic = 0;

  gettimeofday(&time_now,NULL);
  time_sec = time_now.tv_sec;
  time_mil = time_sec * 1000 + time_now.tv_usec/1000;
  time_mic = time_now.tv_sec*1000*1000 + time_now.tv_usec;

  cout<<"second: "<

C代码里面用到了随机数,但是用srand(time(0)) 产生所有的的随机数都是一样的,因为多线程同步进行获取的系统时间是相同的,每个线程的种子是相同的。

这里考虑把时间精确到微妙,然后发现微妙的时候会有不同,于是可以考虑把时间种子精确到微妙。

#include
#include
#include
#include 
using namespace std;
int main()
{
    struct timeval time_now = {0};
    unsigned int time_sec = 0;
    unsigned int time_mil = 0;
    unsigned int time_mic = 0;

    gettimeofday(&time_now,NULL);
    time_sec = time_now.tv_sec;
    time_mil = time_sec * 1000 + time_now.tv_usec/1000;
    time_mic = time_now.tv_sec*1000*1000 + time_now.tv_usec;

    srand(time_sec+time_mil+time_mic);
    cout<

shell(bash)脚本

#!/bin/bash
# author: 
make

STARTTIME=$(date +%s)
threads=32
for ((i=0;i<$threads;i++));do
{
	./test
}&
done
wait

ENDTIME=$(date +%s)
echo "It takes $(($ENDTIME-$STARTTIME)) seconds to complete this task..."
echo "Done."

 

你可能感兴趣的:(其它)