Libcsp

高性能 C 语言并发库
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 不详
投 递 者 咸承教
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Libcsp 是一个高性能 C 语言并发库,受 CSP 模型影响而成。Libcsp 的速度比 Golang 快 10 倍。

特性:

  • 支持多 CPU。
  • 高性能调度。
  • 编译时静态分析堆栈大小。
  • Lock-free 通道。
  • 支持 netpoll 和 timer。

Golang:

go foo(arg1, arg2, arg3)

var wg sync.WaitGroup
wg.Add(2)
go func() { defer wg.Done(); foo(); }()
go func() { defer wg.Done(); bar(); }()
wg.Wait()

runtime.Gosched()

chn := make(chan int, 1 << 6)
num = <-chn
chn <- num

timer := time.AfterFunc(time.Second, foo)
timer.Stop()

Libcsp:

async(foo(arg1, arg2, arg3));

sync(foo(); bar());


yield();

chan_t(int) *chn = chan_new(int)(6);
chan_pop(chn, &num);
chan_push(chn, num);

timer_t timer = timer_after(timer_second, foo());
timer_cancel(timer);
 相关资料
  • 在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给每一个任务。传统逻辑中,开发者需要维护线程池中线程与 CPU 核心数量的对应关系。同样的,Go 地中也可以通过 runtime.GOMAXPROCS() 函数做到,格式为: runtime.GOMAXPROCS(逻辑CPU数量) 这里的逻辑

  • 主要内容:1.难题与方案,2.具体措施,3.九种技术架构1.难题与方案 1、亿级流量电商网站的商品详情页系统架构 面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问,同时能够秒级让最新模板生效的商品详情页系统的架构是如何设计的? 解决方案:异步多级缓存架构+nginx本地化缓存+动态模板渲染的架构 2、redis企业级集群架构 面临难题:如何让redis集群支撑几十万QPS高并发+99.99%高可用+TB级海量数据+企业级数

  • 通过上一节《 Go语言goroutine》的学习,关键字 go 的引入使得在Go语言中并发编程变得简单而优雅,但我们同时也应该意识到并发编程的原生复杂性,并时刻对并发中容易出现的问题保持警惕。 事实上,不管是什么平台,什么编程语言,不管在哪,并发都是一个大话题。并发编程的难度在于协调,而协调就要通过交流,从这个角度看来,并发单元间的通信是最大的问题。 在工程上,有两种最常见的并发通信模型:共享数据

  • 主要内容:Goroutine 介绍,channel有人把Go语言比作 21 世纪的C语言,第一是因为Go语言设计简单,第二则是因为 21 世纪最重要的就是并发程序设计,而 Go 从语言层面就支持并发。同时实现了自动垃圾回收机制。 Go语言的并发机制运用起来非常简便,在启动并发的方式上直接添加了语言级的关键字就可以实现,和其他编程语言相比更加轻量。 下面来介绍几个概念: 进程/线程 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个

  • 本文向大家介绍C#语言Parallel.Invoke 并行调用,包括了C#语言Parallel.Invoke 并行调用的使用技巧和注意事项,需要的朋友参考一下 示例 并行调用方法或动作(并行区域)            

  • 9.7 一面 60分钟 1.实习项目介绍 2.实习相关问题 3.stl问题 4.c++11 内容 5.浮点数的表示方式 剩下记不得了 算法题: 1.相交链表找交点 2.两个字符串找最长相同连续子串 3.矩阵最长递增路径 反问 #寒武纪##寒武纪校招##C++工程师##C/C++##面经#