@@ -12,15 +12,6 @@ namespace Python.Runtime
12
12
/// </summary>
13
13
public class PythonEngine : IDisposable
14
14
{
15
- [ DllImport ( "Kernel32" , EntryPoint = "GetCurrentThreadId" , ExactSpelling = true ) ]
16
- private static extern uint GetCurrentThreadId ( ) ;
17
-
18
- [ DllImport ( "libc" , EntryPoint = "pthread_self" ) ]
19
- private static extern UIntPtr pthread_selfLinux ( ) ;
20
-
21
- [ DllImport ( "pthread" , EntryPoint = "pthread_self" , CallingConvention = CallingConvention . Cdecl ) ]
22
- private static extern uint pthread_selfOSX ( ) ;
23
-
24
15
public static ShutdownMode ShutdownMode
25
16
{
26
17
get => Runtime . ShutdownMode ;
@@ -580,55 +571,25 @@ public static void Exec(string code, IntPtr? globals = null, IntPtr? locals = nu
580
571
/// Gets the native thread ID.
581
572
/// </summary>
582
573
/// <returns>The native thread ID.</returns>
583
- public static uint GetNativeThreadID ( )
574
+ public static ulong GetNativeThreadID ( )
584
575
{
585
- if ( Runtime . PyVersion >= new Version ( 3 , 8 ) )
586
- {
587
- dynamic threading = Py . Import ( "threading" ) ;
588
- return threading . get_native_id ( ) ;
589
- }
590
-
591
- if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) )
592
- {
593
- return GetCurrentThreadId ( ) ;
594
- }
595
-
596
- if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) )
597
- {
598
- return pthread_selfLinux ( ) . ToUInt32 ( ) ;
599
- }
600
-
601
- if ( RuntimeInformation . IsOSPlatform ( OSPlatform . OSX ) )
602
- {
603
- return pthread_selfOSX ( ) ;
604
- }
605
-
606
- throw new InvalidOperationException ( "Could not retrieve native thread ID." ) ;
576
+ dynamic threading = Py . Import ( "threading" ) ;
577
+ return threading . get_ident ( ) ;
607
578
}
608
579
609
580
/// <summary>
610
581
/// Interrupts the execution of a thread.
611
582
/// </summary>
612
583
/// <param name="nativeThreadID">The native thread ID.</param>
613
584
/// <returns>The number of thread states modified; this is normally one, but will be zero if the thread id isn’t found.</returns>
614
- public static int Interrupt ( uint nativeThreadID )
585
+ public static int Interrupt ( ulong nativeThreadID )
615
586
{
616
- if ( Runtime . PyVersion >= new Version ( 3 , 7 ) )
617
- {
618
- if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) )
619
- {
620
- return Runtime . PyThreadState_SetAsyncExc37Windows ( nativeThreadID , Exceptions . KeyboardInterrupt ) ;
621
- }
622
-
623
- return Runtime . PyThreadState_SetAsyncExc37NonWindows ( new UIntPtr ( nativeThreadID ) , Exceptions . KeyboardInterrupt ) ;
624
- }
625
-
626
587
if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) )
627
588
{
628
- return Runtime . PyThreadState_SetAsyncExc36Windows ( ( int ) nativeThreadID , Exceptions . KeyboardInterrupt ) ;
589
+ return Runtime . PyThreadState_SetAsyncExcLLP64 ( ( uint ) nativeThreadID , Exceptions . KeyboardInterrupt ) ;
629
590
}
630
591
631
- return Runtime . PyThreadState_SetAsyncExc36NonWindows ( new IntPtr ( nativeThreadID ) , Exceptions . KeyboardInterrupt ) ;
592
+ return Runtime . PyThreadState_SetAsyncExcLP64 ( nativeThreadID , Exceptions . KeyboardInterrupt ) ;
632
593
}
633
594
634
595
/// <summary>
0 commit comments