Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/daheige/concurrency-in-go
/ functions
Functions
155 in github.com/daheige/concurrency-in-go
⨍
Functions
155
◇
Types & classes
10
Function
main
()
part9/stack.go:12
Function
main
()
part9/app.go:10
Function
main
()
part19/app.go:9
Function
main
()
part19/data-race.go:9
Function
main
()
part19/t.go:9
Function
main
()
part8/select_block_exit.go:12
Function
main
()
part8/select_one.go:8
Function
main
()
part8/select_timeout.go:8
Function
main
()
part8/select_pump.go:8
Function
main
()
part8/select_timeout2.go:9
Function
main
()
part8/select.go:5
Function
main
** channel频率控制 在对channel进行读写的时,go还提供了非常人性化的操作 那就是对读写的频率控制,通过time.Ticke实现 */
part11/chan_rate.go:14
Function
main
()
part11/select_case.go:19
Function
main
* 1. 使用sync包同步goroutine sync大致实现方式WaitGroup 等待一组goroutinue执行完毕. 主程序调用 Add 添加等待的goroutinue数量 每个goroutinue在执行结束时调用 Done 此时等待队列数量减1.,主程序通过Wait阻塞,直到等待队
part11/sync_demo.go:27
Function
main
()
part11/chan_demo.go:28
Function
main
()
part11/chan_work.go:21
Function
main
** channel俗称管道,用于数据传递或数据共享 其本质是一个先进先出的队列,使用goroutine+channel进行数据通讯简单高效 同时也线程安全,多个goroutine可同时修改一个channel,不需要加锁。 channel可分为三种类型: 只读channel:只能读channel里
part11/chan_demo1.go:46
Function
main
()
part11/cal.go:13
Function
main
通过指定goroutine个数,work pool消费,防止goroutine泄露和暴涨 模拟生产者和消费者模式 下面是一个简易的work pool 复杂的work pool可以自行改变
part21/work_pool.go:11
Function
main
()
part6/runtime_1.go:9
Function
main
()
part6/runtime_2.go:14
Function
main
()
part6/chan_2.go:5
Function
main
()
part6/chan.go:30
Function
main
()
part6/chanLock.go:13
Function
main
()
part6/runtime_task.go:16
Function
main
()
part6/runtime_3.go:8
Function
main
()
part6/range_chan.go:5
Function
main
()
part6/chan_3.go:5
Function
main
()
part13/more_cpu.go:31
Function
main
()
part7/timer.go:8
Function
main
NewTicker+for实现每隔多久,指定一些操作
part7/time_ticker.go:9
Function
main
()
part7/ticker_2.go:9
Function
main
http server服务中,对于每个处理器函数或处理器,一般建议对panic进行捕获实现recover恢复 底层源码对于每个请求都是一个独立携程go serve处理,如果运行的独立携程发生了panic,并且不是指定的 http.ErrAbortHandler,才可以捕获到panic,对于其他情况出
part23/http_server_panic.go:19
Function
main
()
part22/time_demo/main.go:9
Function
main
** panic捕获是要看处在什么样的上下文范围中 一个原则:携程运行要看处在什么样的上下文范围中,尽量在独立携程中捕获panic,因为panic不能跨携程捕获 */
part22/panic_catch/panic_catch.go:11
Function
main
()
part22/timeout/timeout.go:66
Function
main
访问地址: http://localhost:4000/
part16/http_rate.go:30
Function
main
()
part16/ratelimit/app.go:14
Function
main
()
part17/app_graceful.go:14
Function
main
()
part17/app_graceful2.go:21
Function
main
()
part18/app.go:31
Function
main
()
part10/demo.go:8
Function
main
()
part10/pro_cust_async.go:24
Function
main
()
part10/prodemo/app.go:16
Function
main
()
part1/lock/livelock.go:11
Function
main
()
part1/lock/hunger_lock.go:14
Function
main
()
part1/lock/deadlock_demo.go:14
Function
main
假设我们有一个数据竞争:两个并发进程试图访问同一个内存区域,并且它们访问内存的方式不是原子的
part1/memory_access_sync/mc_sync.go:8
Function
main
()
part1/memory_access_sync/data-race.go:24
Function
main
1
part1/memory_access_sync/mc_sync_mutex.go:12
Function
main
利用wg保证goroutine执行完毕
part1/data_competition/data_wait.go:9
Function
main
数据竞争 当两个或更多的操作必须以正确的顺序执行时,就会出现竞争状态,但如果程序没有写入,无法使操作顺序得到保持。 大多数时候,这出现在所谓的数据竞争中,其中一个并发操作尝试在某些未确定的时间读取变量 而另一个并发操作尝试写入同一个变量
part1/data_competition/data.go:12
Function
main
利用chan保证goroutine执行完毕
part1/data_competition/data_chan.go:8
Function
okHandler
(w http.ResponseWriter, r *http.Request)
part16/http_rate.go:37
Function
stuffHandler
()
part12/ctx.go:13
← previous
101–155 of 155, ranked by callers