From d5630d1b60a675b42f71fde92e697d9c73aa5940 Mon Sep 17 00:00:00 2001 From: s441433 Date: Fri, 28 Dec 2018 22:13:20 +0100 Subject: [PATCH] Create sqlite3_usleep_windows.go --- .../go-sqlite3/sqlite3_usleep_windows.go | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go diff --git a/src/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go b/src/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go new file mode 100644 index 0000000..1971a48 --- /dev/null +++ b/src/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go @@ -0,0 +1,39 @@ +// Copyright (C) 2018 G.J.R. Timmer . +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file. + +// +build cgo + +package sqlite3 + +// usleep is a function available on *nix based systems. +// This function is not present in Windows. +// Windows has a sleep function but this works with seconds +// and not with microseconds as usleep. +// +// This code should improve performance on windows because +// without the presence of usleep SQLite waits 1 second. +// +// 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 + +/* +#include + +void usleep(__int64 usec) +{ + HANDLE timer; + LARGE_INTEGER ft; + + // Convert to 100 nanosecond interval, negative value indicates relative time + ft.QuadPart = -(10*usec); + + timer = CreateWaitableTimer(NULL, TRUE, NULL); + SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0); + WaitForSingleObject(timer, INFINITE); + CloseHandle(timer); +} +*/ +import "C" + +// EOF