diff --git a/magick/thread_.h b/magick/thread_.h
new file mode 100644
index 0000000..1003a66
--- /dev/null
+++ b/magick/thread_.h
@@ -0,0 +1,53 @@
+/*
+  Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization
+  dedicated to making software imaging solutions freely available.
+
+  You may not use this file except in compliance with the License.
+  obtain a copy of the License at
+
+    http://www.imagemagick.org/script/license.php
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  MagickCore private methods for internal threading.
+*/
+#ifndef _MAGICKCORE_THREAD_H
+#define _MAGICKCORE_THREAD_H
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#if defined(MAGICKCORE_HAVE_PTHREAD)
+typedef pthread_t MagickThreadType;
+#elif defined(MAGICKORE_HAVE_WINTHREADS)
+typedef DWORD MagickThreadType;
+#else
+typedef pid_t MagickThreadType;
+#endif
+
+#if defined(MAGICKCORE_HAVE_PTHREAD)
+typedef pthread_key_t MagickThreadKey;
+#elif defined(MAGICKORE_HAVE_WINTHREADS)
+typedef DWORD MagickThreadKey;
+#else
+typedef unsigned long *MagickThreadKey;
+#endif
+
+extern MagickExport MagickBooleanType
+  MagickCreateThreadKey(MagickThreadKey *),
+  MagickDeleteThreadKey(MagickThreadKey),
+  MagickSetThreadValue(MagickThreadKey,const void *);
+
+extern MagickExport void
+  *MagickGetThreadValue(MagickThreadKey);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif