添加 Notebook 学习笔记

master
bicijinlian 2 years ago
parent 2be372ac6b
commit a713539f72

File diff suppressed because one or more lines are too long

@ -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线程线程ID6 \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
}

@ -1,33 +1,37 @@
多线程学习
多线程学习
==========
## 并发与并行
## 进程与线程
## 并发与并行
## 原生线程
## 进程与线程
## 托管线程
## 原生线程
### 简介
## 托管线程
### 抢占模式与合作模式
### 简介
### 线程本地存储
### 抢占模式与合作模式
### 原子操作与无锁算法
### 线程本地存储
### 锁
+ 自旋锁
+ 互斥锁
+ 混合锁与lock语句
+ 读写锁
### 原子操作与无锁算法
### 信号量
### 锁
+ 自旋锁
+ 互斥锁
+ 混合锁与lock语句
+ 读写锁
### 异步操作
### 信号量
### 执行上下文
### 异步操作
### 同步上下文
### 执行上下文
### 其它
### 同步上下文
## 多线程编程模型
### 基于事件的模型
### 基于任务的模型

Loading…
Cancel
Save