aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGert-Jan Timmer <gjr.timmer@gmail.com>2018-05-25 15:33:53 +0200
committerGert-Jan Timmer <gjr.timmer@gmail.com>2018-05-25 15:33:53 +0200
commit7c89b38a2da041bb3bd4f5db59151ea430c5b1f0 (patch)
tree526b3c3be5a86204b64515959e22c1c76b016bb4
parentAdd: Initial usleep option (diff)
downloadgolite-7c89b38a2da041bb3bd4f5db59151ea430c5b1f0.tar.gz
golite-7c89b38a2da041bb3bd4f5db59151ea430c5b1f0.tar.xz
Implementation for usleep
Implement `usleep` for Windows OS.
-rw-r--r--sqlite3_opt_usleep.go13
-rw-r--r--sqlite3_usleep_windows.go39
2 files changed, 39 insertions, 13 deletions
diff --git a/sqlite3_opt_usleep.go b/sqlite3_opt_usleep.go
deleted file mode 100644
index d6ed38f..0000000
--- a/sqlite3_opt_usleep.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// +build cgo
-// +build windows
-
-// Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>.
-//
-// Use of this source code is governed by an MIT-style
-// license that can be found in the LICENSE file.
-
-package sqlite3
-
-/*
-
-/*
diff --git a/sqlite3_usleep_windows.go b/sqlite3_usleep_windows.go
new file mode 100644
index 0000000..fe4187d
--- /dev/null
+++ b/sqlite3_usleep_windows.go
@@ -0,0 +1,39 @@
+// +build cgo
+
+// Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>.
+//
+// Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+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 <windows.h>
+
+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