diff --git a/Docs/Jupter笔记.001.入门说明.ipynb b/Docs/Jupter笔记.001.入门说明.ipynb
new file mode 100644
index 0000000..7e3ee5e
--- /dev/null
+++ b/Docs/Jupter笔记.001.入门说明.ipynb
@@ -0,0 +1,879 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "多线程学习笔记,Jupyter NoteBook\n",
+ "==============================\n",
+ "\n",
+ "使用 Jupyter NoteBook 形式,优点是代码执行和 Markdown 文档放在同一个文件中,并可以交替显示和分段执行代码。"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "## 显式声明使用 C# 语言\n",
+ "+ csharp\n",
+ "+ fsharp\n",
+ "+ pwsh"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "#!csharp"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "## C# 中的引用\n",
+ "+ 导入程序文件\n",
+ " > 可以导入多种文件,包括 .cs .csc .fc .js等,语法为` #!import /path/to/file ` \n",
+ "+ 引用本机 Dll 文件\n",
+ " > 可以导入本机编译好的dll文件,语法为 `#!import /path/to/file`\n",
+ "+ 引用 Nuget 包\n",
+ "+ > 默认包源下,可以导入nuget,当然也可以设置包源,语法为 `#r 包名,可选版本号`"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "## C# 中的引用\n",
+ "+ 导入程序文件\n",
+ " > 可以导入多种文件,包括 .cs .csc .fc .js等,语法为` #!import /path/to/file ` "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "MultiThreadingStudy.Core.Person
|
Id | |
Name | 小张 |
Address | 上海无名路1号 |
Age | |
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "MultiThreadingStudy.Core.Person
|
Id | |
Name | 小张 |
Address | 上海无名路1号 |
Age | |
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#! import \"..\\MultiThreadingStudy.Core\\Person.cs\"\n",
+ "\n",
+ "Person p = new Person()\n",
+ "{\n",
+ " Id=1,\n",
+ " Name=\"小张\",\n",
+ " Address=\"上海无名路1号\",\n",
+ " Age = 28\n",
+ "};\n",
+ "//在NoteBook中,可以格式化显示(Notebook提供) C#对象:使用 display(对象); 如果在代码结尾的话,可以直接写 C#对象。\n",
+ "display(p);\n",
+ "\n",
+ "//代码结尾的话,直接写 对象\n",
+ "p"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "{ Name = xx, Agx = 33 }
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "var x = new {Name=\"xx\",Agx=33};\n",
+ "display(x);"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 引用本机 Dll 文件\n",
+ " > 可以导入本机编译好的dll文件,语法为 `#!import /path/to/file`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "MultiThreadingStudy.Core.Person
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#r \"..\\MultiThreadingStudy.Core\\bin\\Debug\\netstandard2.1\\MultiThreadingStudy.Core.dll\"\n",
+ "\n",
+ "using MultiThreadingStudy.Core;\n",
+ "\n",
+ "MultiThreadingStudy.Core.Person personA= new MultiThreadingStudy.Core.Person()\n",
+ "{\n",
+ " Id=2,\n",
+ " Name=\"本山\",\n",
+ " Age=55\n",
+ "};\n",
+ "\n",
+ "personA"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 引用 Nuget 包"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 136,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "{\"Id\":2,\"Name\":\"newtonsoft类库\",\"Age\":6}"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "//安装库的最新版本\n",
+ "#r \"nuget:newtonsoft.json\"\n",
+ "var jsonObj = new {Id=2,Name=\"newtonsoft类库\", Age=6};\n",
+ "\n",
+ "//使用库\n",
+ "var jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj);\n",
+ "jsonText"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 137,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "{\"Id\":2,\"Name\":\"System.Text.Json\\u7C7B\\u5E93\",\"Age\":6}"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "//安装库的指定版本\n",
+ "#r \"nuget:System.Text.Json,4.7.2\"\n",
+ "\n",
+ "//使用库\n",
+ "var jsonObj2 = new {Id=2,Name=\"System.Text.Json类库\", Age=6};\n",
+ "var jsonText2 = System.Text.Json.JsonSerializer.Serialize(jsonObj2);\n",
+ "jsonText2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 163,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Restore sources- C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "//安装最新的预览版库\n",
+ "#r \"nuget:xunit,*-*\"\n",
+ "\n",
+ "using Xunit;\n",
+ "using Xunit.Abstractions;\n",
+ "using Xunit.Sdk;\n",
+ "\n",
+ "public class UnitTest1\n",
+ "{\n",
+ " [Fact]\n",
+ " public void Test1()\n",
+ " {\n",
+ " Assert.True(true, \"xxxx\");\n",
+ " }\n",
+ "}"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "## Nuget 包源管理\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 默认 Nuget 包源\n",
+ " > 默认包源可能是:https://api.nuget.org/v3/index.json 使用默认包源的话,可以不添加包源引用。当然也可以添加。"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 165,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Restore sources- C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\
Installed Packages- AutoFixture.Xunit2, 4.18.0
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#r \"nuget:AutoFixture.Xunit2\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 167,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Restore sources- C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\
- https://api.nuget.org/v3/index.json
Installed Packages- AutoFixture.Xunit2, 4.18.0
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "//也可以指定默认包源\n",
+ "#i \"nuget:https://api.nuget.org/v3/index.json\"\n",
+ "\n",
+ "#r \"nuget:AutoFixture.Xunit2\""
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 本机包源 Nuget"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 158,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "Restore sources- C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "//添加本地包源\n",
+ "#i \"nuget:C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\\"\n",
+ "\n",
+ "//使用包源\n",
+ "#r \"nuget:xunit\"\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 经过身份验证的Nuget包源\n",
+ " > 不能直接引用验证包源,可以通过将源的 PAT 放入用户级 nuget.config 文件来访问经过身份验证的源"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "## 内建魔术命令"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ #!about 显示有关内核版本的信息"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " | .NET Interactive © 2020 Microsoft Corporation Version: 1.0.415202+b72e199d0d854bd532a8103ce626a5aab4a71c07 Library version: 1.0.0-beta.23152.2+b72e199d0d854bd532a8103ce626a5aab4a71c07 Build date: 2023-03-08T16:15:05.1062967Z https://github.com/dotnet/interactive |
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!about"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ #!lsmagic 列出可用的魔术命令,包括可能已通过扩展安装的命令"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "#!lsmagic"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ #!time 显示执行时间"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Wall time: 0.3225ms"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!time"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ -h 参数 显示命令的帮助信息"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 104,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Description:\r\n",
+ " Time the execution of the following code in the submission.\r\n",
+ "\r\n",
+ "Usage:\r\n",
+ " #!time [options]\r\n",
+ "\r\n",
+ "Options:\r\n",
+ " -?, -h, --help Show help and usage information\r\n",
+ "\r\n",
+ "\r\n"
+ ]
+ }
+ ],
+ "source": [
+ "#!time -h"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".NET (C#)",
+ "language": "C#",
+ "name": ".net-csharp"
+ },
+ "polyglot_notebook": {
+ "kernelInfo": {
+ "defaultKernelName": "csharp",
+ "items": [
+ {
+ "aliases": [
+ "c#",
+ "C#"
+ ],
+ "languageName": "C#",
+ "name": "csharp"
+ },
+ {
+ "aliases": [
+ "frontend"
+ ],
+ "languageName": null,
+ "name": "vscode"
+ }
+ ]
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Docs/Jupter笔记.002.线程.ipynb b/Docs/Jupter笔记.002.线程.ipynb
new file mode 100644
index 0000000..08cea9a
--- /dev/null
+++ b/Docs/Jupter笔记.002.线程.ipynb
@@ -0,0 +1,225 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "Thread 使用\n",
+ "==============================\n",
+ "学习 Thread,执行各种 Thread 操作。\n",
+ "特别注意:NoteBook 本身的运行线程是后台线程,不会等待由其创建的线程执行结束。与控制台等应用有区别。 "
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "> 全局设置,语言设置、Nuget包引用、空间引用等"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "//全局设置\n",
+ "#!csharp\n",
+ "using System.Threading;\n",
+ "using System.Threading.Channels;\n",
+ "using System.Threading.Tasks;"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "> 创建托管线程,注意:NoteBook 本身的运行线程是后台线程,不会等待由其创建的线程执行结束,这点与控制台等应用有区别。 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "NoteBook线程,线程ID:6 \n",
+ "NoteBook线程,线程名:.NET ThreadPool Worker \n",
+ "NoteBook线程,线程池线程:是的 \n",
+ "NoteBook线程,后台线:是的 \n"
+ ]
+ }
+ ],
+ "source": [
+ "//显示 NoteBook 执行线程信息\n",
+ "var desc = \"NoteBook线程,\";\n",
+ "Console.WriteLine($\"{desc}线程ID:{Thread.CurrentThread.ManagedThreadId} \");\n",
+ "Console.WriteLine($\"{desc}线程名:{Thread.CurrentThread.Name} \");\n",
+ "Console.WriteLine($\"{desc}线程池线程:{(Thread.CurrentThread.IsThreadPoolThread ? \"是的\" : \"否\")} \");\n",
+ "Console.WriteLine($\"{desc}后台线:{(Thread.CurrentThread.IsBackground ? \"是的\" : \"不是\")} \");"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "线程:新线程,已经执行!\n",
+ "线程:NoteBook线程,, 执行结束!\n"
+ ]
+ }
+ ],
+ "source": [
+ "ThreadStart start = ()=>\n",
+ "{\n",
+ " Console.WriteLine($\"线程:{Thread.CurrentThread.Name},已经执行!\");\n",
+ "};\n",
+ "\n",
+ "var t = new Thread(start)\n",
+ "{\n",
+ " Name=\"新线程\"\n",
+ "};\n",
+ "t.Start();\n",
+ "//如果不join,新创建的线程,可能还没来得及执行,就随着Notebook线程的结束而结束了。\n",
+ "t.Join();\n",
+ "\n",
+ "Console.WriteLine($\"线程:{desc}, 执行结束!\");\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".NET (C#)",
+ "language": "C#",
+ "name": ".net-csharp"
+ },
+ "polyglot_notebook": {
+ "kernelInfo": {
+ "defaultKernelName": "csharp",
+ "items": [
+ {
+ "aliases": [
+ "c#",
+ "C#"
+ ],
+ "languageName": "C#",
+ "name": "csharp"
+ },
+ {
+ "aliases": [
+ "frontend"
+ ],
+ "languageName": null,
+ "name": "vscode"
+ },
+ {
+ "aliases": [
+ "powershell"
+ ],
+ "languageName": "PowerShell",
+ "name": "pwsh"
+ },
+ {
+ "aliases": [],
+ "name": ".NET"
+ },
+ {
+ "aliases": [
+ "f#",
+ "F#"
+ ],
+ "languageName": "F#",
+ "name": "fsharp"
+ },
+ {
+ "aliases": [],
+ "languageName": "HTML",
+ "name": "html"
+ },
+ {
+ "aliases": [],
+ "languageName": "KQL",
+ "name": "kql"
+ },
+ {
+ "aliases": [],
+ "languageName": "Mermaid",
+ "name": "mermaid"
+ },
+ {
+ "aliases": [],
+ "languageName": "SQL",
+ "name": "sql"
+ },
+ {
+ "aliases": [],
+ "name": "value"
+ }
+ ]
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Docs/学习.md b/Docs/学习.md
index c65b403..f53fa77 100644
--- a/Docs/学习.md
+++ b/Docs/学习.md
@@ -1,33 +1,37 @@
-߳ѧϰ
+多线程学习
==========
-## 벢
-## ߳
+## 并发与并行
-## ԭ߳
+## 进程与线程
-## й߳
+## 原生线程
-###
+## 托管线程
-### ռģʽģʽ
+### 简介
-### ̱߳ش洢
+### 抢占模式与合作模式
-### ԭӲ㷨
+### 线程本地存储
-###
-+
-+
-+ lock
-+ д
+### 原子操作与无锁算法
-### ź
+### 锁
++ 自旋锁
++ 互斥锁
++ 混合锁与lock语句
++ 读写锁
-### 첽
+### 信号量
-### ִ
+### 异步操作
-### ͬ
+### 执行上下文
-###
+### 同步上下文
+
+## 多线程编程模型
+
+### 基于事件的模型
+### 基于任务的模型