github.com/aergoio/aergo@v1.3.1/contract/sqlite3_usleep_windows.go (about)

     1  // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>.
     2  //
     3  // Use of this source code is governed by an MIT-style
     4  // license that can be found in the LICENSE file.
     5  
     6  // +build cgo
     7  
     8  package contract
     9  
    10  // usleep is a function available on *nix based systems.
    11  // This function is not present in Windows.
    12  // Windows has a sleep function but this works with seconds
    13  // and not with microseconds as usleep.
    14  //
    15  // This code should improve performance on windows because
    16  // without the presence of usleep SQLite waits 1 second.
    17  //
    18  // Source: https://stackoverflow.com/questions/5801813/c-usleep-is-obsolete-workarounds-for-windows-mingw?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
    19  
    20  /*
    21  #include <windows.h>
    22  
    23  void usleep(__int64 usec)
    24  {
    25      HANDLE timer;
    26      LARGE_INTEGER ft;
    27  
    28      // Convert to 100 nanosecond interval, negative value indicates relative time
    29      ft.QuadPart = -(10*usec);
    30  
    31      timer = CreateWaitableTimer(NULL, TRUE, NULL);
    32      SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
    33      WaitForSingleObject(timer, INFINITE);
    34      CloseHandle(timer);
    35  }
    36  */
    37  import "C"
    38  
    39  // EOF