main.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include <QCoreApplication>
  2. #include <thread>
  3. #include <chrono>
  4. #include <iostream>
  5. #include "modulecomm.h"
  6. void * gpa;
  7. std::chrono::time_point<std::chrono::steady_clock, std::chrono::duration<double,std::nano>> t1,t2;
  8. void testcall(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
  9. {
  10. qint64 sendtime;
  11. t2 = std::chrono::steady_clock::now();
  12. double dr_ns = std::chrono::duration<double,std::nano>(t2-t1).count();
  13. memcpy(&sendtime,strdata,8);
  14. qDebug("lat is %d ns is %f ",QDateTime::currentMSecsSinceEpoch() - sendtime,dr_ns);
  15. }
  16. void threadsend()
  17. {
  18. char * strdata = new char[3000000];
  19. while(1)
  20. {
  21. std::this_thread::sleep_for(std::chrono::milliseconds(1000));
  22. qint64 ntime = QDateTime::currentMSecsSinceEpoch();
  23. memcpy(strdata,&ntime,8);
  24. iv::modulecomm::ModuleSendMsg(gpa,strdata,2000000);
  25. t1 = std::chrono::steady_clock::now();
  26. qDebug("send msg.");
  27. }
  28. }
  29. void testcall2(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
  30. {
  31. qint64 sendtime;
  32. t2 = std::chrono::steady_clock::now();
  33. double dr_ns = std::chrono::duration<double,std::nano>(t2-t1).count();
  34. memcpy(&sendtime,strdata,8);
  35. qDebug("lat is %d ns is %f ",QDateTime::currentMSecsSinceEpoch() - sendtime,dr_ns);
  36. }
  37. void threadsend2()
  38. {
  39. char * strdata = new char[3000000];
  40. int nsendlen = 10000;
  41. while(1)
  42. {
  43. std::this_thread::sleep_for(std::chrono::milliseconds(1));
  44. qint64 ntime = QDateTime::currentMSecsSinceEpoch();
  45. memcpy(strdata,&ntime,8);
  46. if(nsendlen<2000000)nsendlen = nsendlen*1001/1000;
  47. iv::modulecomm::ModuleSendMsg(gpa,strdata,nsendlen);
  48. t1 = std::chrono::steady_clock::now();
  49. // qDebug("send msg.");
  50. }
  51. }
  52. #include <future>
  53. int main(int argc, char *argv[])
  54. {
  55. QCoreApplication a(argc, argv);
  56. // auto x1 = std::chrono::system_clock::now();
  57. // std::cout << "秒:"<<std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count() << std::endl;
  58. // std::cout << "毫秒:" << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()<<std::endl;
  59. // std::cout << "微秒:" << std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count() << std::endl;
  60. // std::cout << "纳秒:" << std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch()).count() << std::endl;
  61. // qint64 naotime = std::chrono::system_clock::now().time_since_epoch().count();
  62. // int j;
  63. // for(j=0;j<10000000;j++)
  64. // {
  65. // }
  66. // auto x2 = std::chrono::system_clock::now();
  67. // double elapsed =
  68. // std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now() - x1).count();
  69. // qDebug("ela is %f ",elapsed);
  70. // return 0;
  71. // gpa = iv::modulecomm::RegisterSend("test1",3000000,1,iv::modulecomm::ModuleComm_INTERIOR);
  72. // iv::modulecomm::RegisterRecv("test1",testcall,iv::modulecomm::ModuleComm_INTERIOR);
  73. // std::thread * xthread = new std::thread(threadsend);
  74. gpa = iv::modulecomm::RegisterSend("test1",1000,1,iv::modulecomm::ModuleComm_INTERIOR);
  75. iv::modulecomm::RegisterRecv("test1",testcall2,iv::modulecomm::ModuleComm_INTERIOR);
  76. // iv::modulecomm::RegisterRecv("test1",testcall2);
  77. std::thread * xthread = new std::thread(threadsend2);
  78. return a.exec();
  79. }