diff --git a/OpenSSL/crypto.py b/OpenSSL/crypto.py
index a52862c..92ec815 100644
--- a/OpenSSL/crypto.py
+++ b/OpenSSL/crypto.py
@@ -10,6 +10,7 @@
     PY3 as _PY3)
 
 from OpenSSL._util import (
+    binding as _binding,
     ffi as _ffi,
     lib as _lib,
     exception_from_error_queue as _exception_from_error_queue,
@@ -2808,34 +2809,7 @@
     return pkcs12
 
 
-def _initialize_openssl_threads(get_ident, Lock):
-    import _ssl
-    return
-
-    locks = list(Lock() for n in range(_lib.CRYPTO_num_locks()))
-
-    def locking_function(mode, index, filename, line):
-        if mode & _lib.CRYPTO_LOCK:
-            locks[index].acquire()
-        else:
-            locks[index].release()
-
-    _lib.CRYPTO_set_id_callback(
-        _ffi.callback("unsigned long (*)(void)", get_ident))
-
-    _lib.CRYPTO_set_locking_callback(
-        _ffi.callback(
-            "void (*)(int, int, const char*, int)", locking_function))
-
-
-try:
-    from thread import get_ident
-    from threading import Lock
-except ImportError:
-    pass
-else:
-    _initialize_openssl_threads(get_ident, Lock)
-    del get_ident, Lock
+_binding.init_static_locks()
 
 # There are no direct unit tests for this initialization.  It is tested
 # indirectly since it is necessary for functions like dump_privatekey when
