GXB's Blog

  • 首页
  • 学习笔记
    • C++
    • golang
    • javascript
    • python
  • 工具分享
  • 其它
学习笔记
golang

深入理解Go语言中的闭包

闭包 在函数编程中经常用到闭包,闭包是什?它是怎么产生的及用来解决什么问题呢?先给出闭包的字面定义:闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。这个从字面上很难理解,特别对于一直使用命令式语言进行编程的程序员们。 Go语言中的闭包 先看一个demo: func f(i int) func() int { return func() int { i++ return i } } 函数f返回了一个函数,返回的这个函数就是一个闭包。这个函数中本身是没有定义变量i的,而是引用了它所在的环境(函数…

2026年4月24日 0条评论 1点热度 0人点赞 admin 阅读全文
C++

C++多线程shared_mutex以及读写锁应用

在前面的三讲中我们使用的mutex都是普通的std::mutex,这里介绍一下shared_mutex,版本为C++17 std::shared_mutex的底层实现时操作系统 提供的读写锁,在读多写少的情况下,该shared_mutex比mutex更加高效。 它提供了常用的四种方法: lock和unlock分别用于获取写锁和解除写锁 lock_shared和unlock_shared分别用于获取读锁和解除读锁 写锁模式称为排他锁,读锁模式称为共享锁。 c++11和c++14标准中分别引入unique_lock和s…

2026年4月24日 0条评论 1点热度 0人点赞 admin 阅读全文
C++

使用std::future特性进行异步编程

在异步编程模式下,一般会有这样的场景,即一个线程(生产者)准备好一个任务后,需要通知一个或者多个其他线程(消费者)进行处理,这个时候我们想到了mutex,但是互斥锁只是保护临界资源,在这种场景下是不适用的。对,这个时候可以用条件变量,但是条件变量使用起来特别繁琐,需要mutex配合使用,虽然在C++11下对条件变量以及mutex进行了RAII封装,分别是std::condition_variable以及std::unique_lock(不能使用std::lock_guard),但是用起来还是不够简洁。 在C++11…

2026年4月24日 0条评论 2点热度 0人点赞 admin 阅读全文
C++

C++ 时间戳和string相互转换

在现代语言,比如golang或python中时间戳和string之间相互转换是很方便的,C++标准库中没有时间戳和string相互转换的函数,需要我们手动封装一下。 //用time()取得当前时间 (秒数), 利用localtime() 转换成struct tm 再利用mktime()将struct tm转换成原来的秒数。 #include <time.h> main(){ time_t timep; struct tm *p; time(&timep); printf("time() : %d…

2026年4月24日 0条评论 6点热度 1人点赞 admin 阅读全文

近期文章

  • 深入理解Go语言中的闭包
  • 告别昂贵的云服务器:用 frp 将你的电脑“搬”到公网
  • 超星学习通刷课教程与刷课脚本分享
  • C++多线程shared_mutex以及读写锁应用
  • 使用std::future特性进行异步编程

近期评论

您尚未收到任何评论。

COPYRIGHT © 2026 GXB's Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang