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