{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用锁:自旋锁\n",
    "============="
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自旋锁"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 全局设置,语言设置、Nuget包引用、空间引用等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "dotnet_interactive": {
     "language": "csharp"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    }
   },
   "outputs": [],
   "source": [
    "//全局设置\n",
    "#!csharp\n",
    "using System.Threading;\n",
    "using System.Threading.Channels;\n",
    "using System.Threading.Tasks;\n",
    "\n",
    "//全局变量\n",
    "var noteBookThreadDesc = \"NoteBook线程\";\n",
    "\n",
    "//全局方法\n",
    "//显示线程信息\n",
    "public void ShowThreadInfo(Thread showThread=null, string describe = null)\n",
    "{\n",
    "    if(showThread == null)\n",
    "    {\n",
    "        showThread = Thread.CurrentThread;\n",
    "    }\n",
    "\n",
    "    if(string.IsNullOrWhiteSpace(describe))\n",
    "    {\n",
    "        describe = showThread.Name == null ? \"无名\" : showThread.Name;\n",
    "    }\n",
    "\n",
    "    Console.WriteLine($\"{describe}线程ID:{showThread.ManagedThreadId} \");\n",
    "    Console.WriteLine($\"{describe}线程名:{showThread.Name} \");\n",
    "    Console.WriteLine($\"{describe}线程状态:{showThread.ThreadState} \");\n",
    "    Console.WriteLine($\"{describe}线程模式:{showThread.GetApartmentState()} \");\n",
    "    Console.WriteLine($\"{describe}激活:{(showThread.IsAlive ? \"活动\" : \"非活动\")} \");\n",
    "    Console.WriteLine($\"{describe}线程池线程:{(showThread.IsThreadPoolThread ? \"是的\" : \"否\")} \");\n",
    "    Console.WriteLine($\"{describe}后台线:{(showThread.IsBackground ? \"是的\" : \"不是\")} \");\n",
    "    Console.WriteLine($\"{describe}区域:{showThread.CurrentCulture}\");\n",
    "    Console.WriteLine($\"{describe}UI区域:{showThread.CurrentUICulture}\");\n",
    "    Console.WriteLine($\"{describe}优先级:{showThread.Priority}\");\n",
    "}\n",
    "\n",
    "//显示线程状态\n",
    "public void ShowThreadState(Thread showThread=null, string describe = null)\n",
    "{\n",
    "    if(showThread == null)\n",
    "    {\n",
    "        showThread = Thread.CurrentThread;\n",
    "    }\n",
    "\n",
    "    if(string.IsNullOrWhiteSpace(describe))\n",
    "    {\n",
    "        describe = showThread.Name == null ? \"无名\" : showThread.Name;\n",
    "    }\n",
    "    Console.WriteLine($\"{describe}线程状态:{showThread.ThreadState} \");\n",
    "}"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".NET (C#)",
   "language": "C#",
   "name": ".net-csharp"
  },
  "language_info": {
   "name": "polyglot-notebook"
  },
  "polyglot_notebook": {
   "kernelInfo": {
    "defaultKernelName": "csharp",
    "items": [
     {
      "aliases": [],
      "name": ".NET"
     },
     {
      "aliases": [
       "C#",
       "c#"
      ],
      "languageName": "C#",
      "name": "csharp"
     },
     {
      "aliases": [
       "F#",
       "f#"
      ],
      "languageName": "F#",
      "name": "fsharp"
     },
     {
      "aliases": [],
      "languageName": "HTML",
      "name": "html"
     },
     {
      "aliases": [
       "js"
      ],
      "languageName": "JavaScript",
      "name": "javascript"
     },
     {
      "aliases": [],
      "languageName": "KQL",
      "name": "kql"
     },
     {
      "aliases": [],
      "languageName": "Mermaid",
      "name": "mermaid"
     },
     {
      "aliases": [
       "powershell"
      ],
      "languageName": "PowerShell",
      "name": "pwsh"
     },
     {
      "aliases": [],
      "languageName": "SQL",
      "name": "sql"
     },
     {
      "aliases": [],
      "name": "value"
     },
     {
      "aliases": [
       "frontend"
      ],
      "name": "vscode"
     },
     {
      "aliases": [],
      "name": "webview"
     }
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}