最新 | 最热门 | 最高评价

+0  C++ Latch 实现

Tag: C/C++语言编程
ideawu 发于 2021年08月26日 21:10 | 点击: 2057 | 展开摘要
Latch(Binary Semaphore) 不同于信号量(Counting Semaphore), 也不同于条件变量, 它是一种合并信号成一个标记的通信方式, 可用于实现 Batch 操作. 例如, 两个线程围绕一个标记, 一个设置(生产者), 一个复位(消费者). 如果标记已设置, 则消费者立即复位然后返回. 如果标记未设置, 则消费者等待标记被设置.

在生产者消费者编程模式中, 生产者产生任务, 任务被加入队列中, 同时通过 Latch 告知消费者. 使用 Latc

查看全文: http://www.udpwork.com/item/18110.html

+0  Await:从 Swift 到 C++

Tag: C++ | 软件开发
sipoint 发于 2021年06月16日 01:09 | 点击: 720 | 展开摘要
上周三(6/9)早上醒来,发现全世界都在赞叹 WWDC 里宣布的新版 Swift async/await 特性。看了几条信息隐约说是基于 coroutine。尽管从去年起因为对 Apple Silicon Mac 迁移的失望已经把个人项目向 Windows 平台转移,但看在当年研究 Lua coroutine 和 Lisp continuation 下了很大功夫的份上,决定探索一下这个 Swift 语言新特性的细节。特别是在没有 VM 的语言上采用 coroutine 会有什

查看全文: http://www.udpwork.com/item/17914.html

+0  并发编程的核心技术 – 多版本(Multi Version)

Tag: C/C++语言编程 | Computer System | 分布式 | 数据库 | 算法
ideawu 发于 2021年04月17日 18:20 | 点击: 556 | 展开摘要
在单机编程时代, 每一项数据只有唯一的一份, 对数据的修改也是 in-place 的. 但是, 在并发编程领域, 包括分布式系统, 数据多版本(Multi Version, Versioning)是核心.

我们先从单机编程的内存操作出发. 对于内存的操作, 都是原地(in-place)更新的. 对象和内存空间强绑定, 当更新对象时, 是将对象的内存空间擦除然后用新数据写覆盖. 到了多线程编程时代, 就引入了锁机制, 因为擦除和写操作过程不是原子性的, 可能擦除到一半时, 就

查看全文: http://www.udpwork.com/item/17461.html

+0  Exception Reconsidered

Tag: C++ | 软件开发
sipoint 发于 2020年12月24日 03:50 | 点击: 544 | 展开摘要
我一直是 C++ exception 的反对者。《Programming in Lua(二)- 异常与错误码》提到 Russ Cox 谈论 C++ exception 的所谓「根本缺陷」。我以前的认识是返回 error code 是最好的错误处理方式。

和返回 error code 不同,exception 会触发 call stack 的回退,从而失去了错误发生时的程序运行状态(指代运行状态的术语是 continuation)。这是我之前极力避免 exception 的最

查看全文: http://www.udpwork.com/item/17731.html

+0  Rust语言的编程范式

Tag: Rust 语言 | 编程语言 | C++ | Java | Rust
陈皓 发于 2020年04月04日 14:48 | 点击: 584 | 展开摘要
总是有很多很多人来问我对Rust语言怎么看的问题,在各种地方被at,其实,我不是很想表达我的想法。因为在不同的角度,你会看到不同的东西。编程语言这个东西,老实说很难评价,在学术上来说,Lisp就是很好的语言,然而在工程使用的时候,你会发现Lisp没什么人用,而Javascript或是PHP这样在学术很糟糕设计的语言反而成了主流,你觉得C++很反人类,在我看来,C++有很多不错的设计,而且对于了解编程语言和编译器的和原理非常有帮助。但是C++也很危险,所以,出现在像Java或G

查看全文: http://www.udpwork.com/item/17498.html

+0  How could it possible to assign an integer to string?

Tag: develope | c++
Robin Dong 发于 2018年10月22日 11:12 | 点击: 1732 | 展开摘要
The snippet below could be compiled and run:

#include <map>
#include <string>
#include <iostream>

using namespace std;

int main(void) {
std::map<std::string, std::string> hmap;
hmap["a"] = "appl

查看全文: http://www.udpwork.com/item/17161.html

+0  Move semantics in C++11

Tag: develope | c++11
Robin Dong 发于 2018年10月19日 15:18 | 点击: 2131 | 展开摘要
After studying an example for Move Semantics of C++11, I write a more complete code snippet:

#include <iostream>

using namespace std;

class Intvec {
public:
explicit Intvec(size_t num = 0)
: m_size(num), m_data(new int[

查看全文: http://www.udpwork.com/item/17157.html

+0  [翻译]15个最常用的GCC编译器参数

Tag: C++
鸟窝 发于 2018年08月28日 18:35 | 点击: 1640 | 展开摘要
原文: 15 Most Frequently Used GCC Compiler Command Line Options 以及评论中大家提供的一些参数。

GCC编译器是一个日常流行的 C 编译器, 很多Linux的发布版本中都带有这个编译器。这篇文章列举了一些最常用的编译参数。

本文中使用下面的C语言实现的例子:

1
2
3
4
5
6
7

#include<stdio.h>

int main(void)
{
printf("\n The Gee

查看全文: http://www.udpwork.com/item/17039.html

+0  炮打TCP – 关于一而再再而三的粘包拆包问题的大字报

Tag: C/C++语言编程 | Computer System
ideawu 发于 2018年06月13日 15:05 | 点击: 1956 | 展开摘要
TCP 所谓的粘包和拆包问题,是技术圈里最奇葩的问题之一!

一而再,再而三,就跟傻逼的中国球迷支持中国足球队一样,前赴后继。有时候同一个人多次在犯同一个错误,有时候是前脚一个犯错了后脚又来一个还犯同样的错。即使是最优秀的程序员,也会在这个问题上面栽跟头,思维甚至很难转过弯,很久才能意识到自己的错误。而低水平的程序员就更不用说了,很多人到死都没有理解这个错误并解决掉,只是逃掉了而已。

我们固然可以认为原因是某些人学艺不精,但那么多的人,其中包括无数的优秀程序员在 TCP 粘

查看全文: http://www.udpwork.com/item/16902.html

+0  C函数中形参传递方式的差别

Tag: C/C++ | 计算机系统
止戈 发于 2018年06月10日 00:14 | 点击: 1186 | 展开摘要
C函数中的形式参数可以是基本类型变量名,构造类型变量名和指针类型变量名。对于不同的形式参数,其传递参数的方式不同,总体来说分成两种:按值传递和按地址传递。

当形参是基本类型变量名时,采用按值传递方式;当形参是指针类型变量名或者构造类型变量名时,采用按地址传递方式。

下面通过两个相似的程序说明二者的区别:

//程序一:按地址传递参数
#include <stdio.h>
swap(int *x,int *y){
int t=*x; *x=*y; *y

查看全文: http://www.udpwork.com/item/17137.html

+3  程序员练级攻略(2018) 与我的专栏

Tag: 技术读物 | 杂项资源 | C++ | Java | Javascript | Linux | Programmer | Python | React | Unix | Web
陈皓 发于 2018年05月29日 12:38 | 点击: 2999 | 展开摘要
写极客时间8个月了,我的专栏现在有一定的积累了,今天想自己推荐一下。因为最新的系列《程序员练级攻略(2018)版》正在连载中,而且文章积累量到了我也有比较足的自信向大家推荐我的这个专栏了。推荐就从最新的这一系统的文章开始。

2011年,我在 CoolShell 上发表了 《程序员技术练级攻略》一文,得到了很多人的好评(转载的不算,在我的网站上都有近1000W的访问量了)。并且陆续收到了一些人的反馈,说跟着这篇文章找到了不错的工作。几年过去,也收到了好些邮件和私信,希望我把这

查看全文: http://www.udpwork.com/item/17009.html

+0  API设计原则 – Qt官网的设计实践总结

Tag: C/C++语言 | 技术读物 | 程序设计 | 系统架构 | API | api-design | API设计 | C++ | Coding | Design | Programmer
李 鼎 发于 2017年07月25日 14:16 | 点击: 2172 | 展开摘要
(感谢好友 @李鼎 翻译此文)

原文链接:API Design Principles – Qt Wiki

基于Gary的影响力上 Gary Gao 的译文稿:C++的API设计指导

译序

Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节

查看全文: http://www.udpwork.com/item/16371.html
|<<<1234567>>>| 一共15页, 178条记录