This commit is contained in:
github-actions[bot]
2024-08-13 00:15:53 +00:00
parent 420994d26a
commit 24eb7f8fea
159 changed files with 2739 additions and 2739 deletions

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>Goroutines - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.1. Goroutines</h2>
<p>在Go语言中每一个并发的执行单元叫作一个goroutine。设想这里的一个程序有两个函数一个函数做计算另一个输出结果假设两个函数没有相互之间的调用关系。一个线性的程序会先调用其中的一个函数然后再调用另一个。如果程序中包含多个goroutine对两个函数的调用则可能发生在同一时刻。马上就会看到这样的一个程序。</p>
@@ -618,10 +618,10 @@ func fib(x int) int {
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-01.md"
@@ -629,7 +629,7 @@ func fib(x int) int {
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>示例: 并发的Clock服务 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.2. 示例: 并发的Clock服务</h2>
<p>网络编程是并发大显身手的一个领域由于服务器是最典型的需要同时处理很多连接的程序这些连接一般来自于彼此独立的客户端。在本小节中我们会讲解go语言的net包这个包提供编写一个网络客户端或者服务器程序的基本组件无论两者间通信是使用TCP、UDP或者Unix domain sockets。在第一章中我们使用过的net/http包里的方法也算是net包的一部分。</p>
@@ -713,10 +713,10 @@ $ clockwall NewYork=localhost:8010 Tokyo=localhost:8020 London=localhost:8030
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-02.md"
@@ -724,7 +724,7 @@ $ clockwall NewYork=localhost:8010 Tokyo=localhost:8020 London=localhost:8030
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>示例: 并发的Echo服务 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.3. 示例: 并发的Echo服务</h2>
<p>clock服务器每一个连接都会起一个goroutine。在本节中我们会创建一个echo服务器这个服务在每个连接中会有多个goroutine。大多数echo服务仅仅会返回他们读取到的内容就像下面这个简单的handleConn函数所做的一样</p>
@@ -669,10 +669,10 @@ $ killall reverb2
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-03.md"
@@ -680,7 +680,7 @@ $ killall reverb2
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>Channels - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.4. Channels</h2>
<p>如果说goroutine是Go语言程序的并发体的话那么channels则是它们之间的通信机制。一个channel是一个通信机制它可以让一个goroutine通过它给另一个goroutine发送值信息。每个channel都有一个特殊的类型也就是channels可发送数据的类型。一个可以发送int类型数据的channel一般写为chan int。</p>
@@ -797,10 +797,10 @@ func request(hostname string) (response string) { /* ... */ }
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-04.md"
@@ -808,7 +808,7 @@ func request(hostname string) (response string) { /* ... */ }
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>并发的循环 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.5. 并发的循环</h2>
<p>本节中我们会探索一些用来在并行时循环迭代的常见并发模型。我们会探究从全尺寸图片生成一些缩略图的问题。gopl.io/ch8/thumbnail包提供了ImageFile函数来帮我们拉伸图片。我们不会说明这个函数的实现只需要从gopl.io下载它。</p>
@@ -732,10 +732,10 @@ func makeThumbnails6(filenames &lt;-chan string) int64 {
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-05.md"
@@ -743,7 +743,7 @@ func makeThumbnails6(filenames &lt;-chan string) int64 {
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>示例: 并发的Web爬虫 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.6. 示例: 并发的Web爬虫</h2>
<p>在5.6节中我们做了一个简单的web爬虫用bfs(广度优先)算法来抓取整个网站。在本节中我们会让这个爬虫并行化这样每一个彼此独立的抓取命令可以并行进行IO最大化利用网络资源。crawl函数和gopl.io/ch5/findlinks3中的是一样的。</p>
@@ -713,10 +713,10 @@ func crawl(url string) []string {
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-06.md"
@@ -724,7 +724,7 @@ func crawl(url string) []string {
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>基于select的多路复用 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.7. 基于select的多路复用</h2>
<p>下面的程序会进行火箭发射的倒计时。time.Tick函数返回一个channel程序会周期性地像一个节拍器一样向这个channel发送事件。每一个事件的值是一个时间戳不过更有意思的是其传送方式。</p>
@@ -681,10 +681,10 @@ default:
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-07.md"
@@ -692,7 +692,7 @@ default:
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>示例: 并发的目录遍历 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.8. 示例: 并发的目录遍历</h2>
<p>在本小节中我们会创建一个程序来生成指定目录的硬盘使用情况报告这个程序和Unix里的du工具比较相似。大多数工作用下面这个walkDir函数来完成这个函数使用dirents函数来枚举一个目录下的所有入口。</p>
@@ -738,10 +738,10 @@ func dirents(dir string) []os.FileInfo {
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-08.md"
@@ -749,7 +749,7 @@ func dirents(dir string) []os.FileInfo {
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>并发的退出 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.9. 并发的退出</h2>
<p>有时候我们需要通知goroutine停止它正在干的事情比如一个正在执行计算的web服务然而它的客户端已经断开了和服务端的连接。</p>
@@ -646,10 +646,10 @@ go func() {
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-09.md"
@@ -657,7 +657,7 @@ go func() {
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>示例: 聊天服务 - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h2>8.10. 示例: 聊天服务</h2>
<p>我们用一个聊天服务器来终结本章节的内容这个程序可以让一些用户通过服务器向其它所有用户广播文本消息。这个程序中有四种goroutine。main和broadcaster各自是一个goroutine实例每一个客户端的连接都会有一个handleConn和clientWriter的goroutine。broadcaster是select用法的不错的样例因为它需要处理三种不同类型的消息。</p>
@@ -684,10 +684,10 @@ You are 127.0.0.1:64216 127.0.0.1:64216 has arrived
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8-10.md"
@@ -695,7 +695,7 @@ You are 127.0.0.1:64216 127.0.0.1:64216 has arrived
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>

View File

@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="zh" class="sidebar-visible no-js light">
<head>
<!-- Book generated using https://github.com/wa-lang/mnbook -->
<!-- Book generated using https://github.com/wa-lang/wabook -->
<meta charset="UTF-8">
<title>Goroutines和Channels - Go语言圣经</title>
<!-- Custom HTML head -->
@@ -12,17 +12,17 @@
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../static/mnbook/css/variables.css">
<link rel="stylesheet" href="../static/mnbook/css/general.css">
<link rel="stylesheet" href="../static/mnbook/css/chrome.css">
<link rel="stylesheet" href="../static/mnbook/css/print.css" media="print">
<link rel="stylesheet" href="../static/wabook/css/variables.css">
<link rel="stylesheet" href="../static/wabook/css/general.css">
<link rel="stylesheet" href="../static/wabook/css/chrome.css">
<link rel="stylesheet" href="../static/wabook/css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../static/mnbook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/mnbook/fonts/fonts.css">
<link rel="stylesheet" href="../static/wabook/FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../static/wabook/fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../static/mnbook/highlight.css">
<link rel="stylesheet" href="../static/mnbook/tomorrow-night.css">
<link rel="stylesheet" href="../static/mnbook/ayu-highlight.css">
<link rel="stylesheet" href="../static/wabook/highlight.css">
<link rel="stylesheet" href="../static/wabook/tomorrow-night.css">
<link rel="stylesheet" href="../static/wabook/ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
@@ -36,15 +36,15 @@
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mnbook-theme');
var sidebar = localStorage.getItem('mnbook-sidebar');
var theme = localStorage.getItem('wabook-theme');
var sidebar = localStorage.getItem('wabook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mnbook-theme', theme.slice(1, theme.length - 1));
localStorage.setItem('wabook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mnbook-sidebar', sidebar.slice(1, sidebar.length - 1));
localStorage.setItem('wabook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
@@ -52,7 +52,7 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mnbook-theme'); } catch(e) { }
try { theme = localStorage.getItem('wabook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
@@ -66,7 +66,7 @@
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mnbook-sidebar'); } catch(e) { }
try { sidebar = localStorage.getItem('wabook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
@@ -528,7 +528,7 @@
<div class="sidetoc"><nav class="pagetoc"></nav></div>
<main>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>MnBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/mnbook">https://github.com/wa-lang/mnbook</a></em></li></ul><hr>
<ul dir="auto"><li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li><li><em>WaBook(Go语言实现的MD电子书构建工具): <a href="https://github.com/wa-lang/wabook">https://github.com/wa-lang/wabook</a></em></li></ul><hr>
<h1>第8章 Goroutines和Channels</h1>
<p>并发程序指同时进行多个任务的程序随着硬件的发展并发程序变得越来越重要。Web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会后台执行各种计算任务和网络请求。即使是传统的批处理问题——读取数据、计算、写输出现在也会用并发来隐藏掉I/O的操作延迟以充分利用现代计算机设备的多个核心。计算机的性能每年都在以非线性的速度增长。</p>
@@ -585,10 +585,10 @@
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="../static/mnbook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/mnbook/book.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/book.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
var pagePath = "ch8/ch8.md"
@@ -596,7 +596,7 @@
<!-- Custom JS scripts -->
<script src="../static/mnbook/giscus.js" type="text/javascript" charset="utf-8"></script>
<script src="../static/wabook/giscus.js" type="text/javascript" charset="utf-8"></script>
</body>