Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RegisterWaitHandle()

void System.Threading.PortableThreadPool.RegisterWaitHandle ( RegisteredWaitHandle handle)
inlinepackage

Definition at line 1765 of file PortableThreadPool.cs.

1766 {
1767 if (NativeRuntimeEventSource.Log.IsEnabled())
1768 {
1769 NativeRuntimeEventSource.Log.ThreadPoolIOEnqueue(handle);
1770 }
1772 try
1773 {
1774 WaitThreadNode waitThreadNode = _waitThreadsHead;
1775 if (waitThreadNode == null)
1776 {
1777 waitThreadNode = (_waitThreadsHead = new WaitThreadNode(new WaitThread()));
1778 }
1779 WaitThreadNode waitThreadNode2;
1780 do
1781 {
1782 if (waitThreadNode.Thread.RegisterWaitHandle(handle))
1783 {
1784 return;
1785 }
1786 waitThreadNode2 = waitThreadNode;
1787 waitThreadNode = waitThreadNode.Next;
1788 }
1789 while (waitThreadNode != null);
1790 waitThreadNode2.Next = new WaitThreadNode(new WaitThread());
1791 waitThreadNode2.Next.Thread.RegisterWaitHandle(handle);
1792 }
1793 finally
1794 {
1796 }
1797 }

References System.Threading.PortableThreadPool._waitThreadLock, System.Threading.PortableThreadPool._waitThreadsHead, System.Threading.LowLevelLock.Acquire(), System.handle, System.Diagnostics.Tracing.NativeRuntimeEventSource.Log, System.Threading.PortableThreadPool.WaitThreadNode.Next, System.Threading.PortableThreadPool.WaitThread.RegisterWaitHandle(), System.Threading.LowLevelLock.Release(), and System.Threading.PortableThreadPool.WaitThreadNode.Thread.