摘要:
假设有一个生产者线程,一个消费者线程,生产一个,消费一个。我们来看看怎么实现。 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> int buffer; int count = 0; voi 阅读全文
摘要:
锁的基本思想 lock_t mutex; ... lock(&mutex); balance = balance + 1; unlock(&mutex); 锁的基本使用如上,首先声明一个锁变量,lock()尝试获取锁,如果没有其它线程持有该锁,该线程会获取锁,进入临界区,其它线程无法进入临界区。锁的 阅读全文
摘要:
线程创建 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); thread: 指向pth 阅读全文
摘要:
概述 从 C++ 11 中开始,该语言支持两种类型的分配:复制赋值和移动赋值。其中的内部细节是咋样的呢?今天跟踪了一下,是个蛮有趣的过程。下面我们以一个简单的类来做个分析。 主函数 下面我们开始调试: 输出: 我们通过构造函数构造了三个变量,他们的值和 复制赋值 我们接着单步走: 可以发现首先调用了 阅读全文
摘要:
起源于C语言 左值和右值都是从继承C语言继承过来的,那么为什么C语言中要创造“左值和右值”,在C语言中又是怎么定义的呢? 在Kernighan Kernighan和Ritchie创造了左值这个术语来区分某些表达与其他表达。在《The C Programming Language 》中他们写到"An 阅读全文
摘要:
题:从“in.txt”读取数据,然后分奇偶分别存到“out_odd.txt”和“out_even.txt”中 出现了一个很奇怪的现象,文件out_odd.txt”和“out_even.txt”虽然创建了,可是文件是空,测试了一下“in.txt”中的数已经读出来了,为什么会出现这样奇怪的文件呢?我一度 阅读全文
摘要:
绝对路径: app.applicationDirPath() : 这个获取的就是一个绝对路径,是程序运行时的绝对路径,如果是debug模式,绝对路径定位到debug文件 QDir::currentPath();这个获取的是工作目录的绝对路径。在工程中点击运行获取的是下面设置的路径。但是如果在debu 阅读全文
摘要:
先来看个问题:在一个string的vector容器中,寻找第一个长度大于4的元素。 很简单,只要使用find_if和一个函数就可以。可是假如我们之前不确定界定元素大小的临界值,这可怎么办呢?这是就可以使用“lambda”表达式。它的出现刚好可以弥补类型find_if这些泛型算法只能使用一元谓词的尴尬 阅读全文
摘要:
"partition"和“stable_partition”设计的目的是根据一个谓词而把容器分为两部分。可是他们具体的区别在哪里呢?下面我们来验证一下。 output: 可以发现,stable_partition除了根据谓词把容器划分为两部分,还可以保持容器原有元素的顺序。 阅读全文
摘要:
output: 很奇怪,按理说应该是sum: 15.1。可是实际问题出在哪里呢? 后来发现问题出在accumulate的第三个参数0上,0决定了返回数值的类型。 阅读全文