Date: Sun, 19 Apr 2020 04:03:53 +0300 From: =?UTF-8?B?QW5kcmV5IFNtYWdpbg==?= <samspeed@mail.ru> To: freebsd-arm@freebsd.org Subject: =?UTF-8?B?TXVsdGl0aHJlYWRlZCBsYXRlbmN5IHRvbyByYW5kb20u?= Message-ID: <1587258233.899122295@f226.i.mail.ru>
index | next in thread | raw e-mail
I wrote simple multithreaded example :
main.cpp:
#include <thread>
#include <unistd.h>
#include <time.h>
int dTimeMax = 0;
int dTimeMin = 0x7FFFFFFF;
int Nanosec;
bool ThreadExit = false;
void Thread()
{
timespec T1,T2;
for( ; !ThreadExit ; )
{
clock_gettime( CLOCK_REALTIME_PRECISE, &T1 );
clock_gettime( CLOCK_REALTIME_PRECISE, &T2 );
Nanosec = ( T2.tv_sec - T1.tv_sec )*1000000000 + T2.tv_nsec - T1.tv_nsec ;
if ( Nanosec > dTimeMax ) dTimeMax = Nanosec;
if ( Nanosec < dTimeMin ) dTimeMin = Nanosec;
}
}
int main( int argc, char *argv[] )
{
std::thread Thr( Thread );
for( int N=0; N<100000; ++N )
printf("%d \t%d \t%d\n", dTimeMax, dTimeMin, Nanosec );
ThreadExit=true;
Thr.join();
}
On my PC
dTimeMax — dTimeMin < 8000 in console over ssh.
dTimeMax — dTimeMin < 5000 in tmpfs file output.
On my Orange-Pi Zero board it produce very random values:
dTimeMax — dTimeMin > 2 000 000 in console over ssh .
dTimeMax — dTimeMin > 15 000 in tmpfs file output.
What can help disable interrupt of thread ?
Set kern.hz=250000 not change result.
FreeBSD orangepi-zero 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r359929: Thu Apr 16 06:10:42 MSK 2020 /usr/src/arm.armv7/sys/GENERIC-NODEBUG arm
to compile: c++ main.cpp -lthr
--
Andrey Smagin
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1587258233.899122295>
