随笔分类 -  C++

1 2 3 下一页

__atomic_load_n
摘要:可以使用gcc提供的内置函数__atomic_load_n()来原子地一次性读取多个变量的值。该函数使用了GCC内置的原子操作,可以保证在不被中断的情况下完成读取。 以下是一个示例代码,读取三个整数变量a、b和c的值: #include <stdio.h> #include <stdatomic.h 阅读全文

posted @ 2023-10-14 11:44 tycoon3 阅读(1945) 评论(0) 推荐(0) 编辑

[c++11] ——条件变量(Condition Variable)
摘要:互斥锁std::mutex是一种最常见的线程间同步的手段,但是在有些情况下不太高效。 假设想实现一个简单的消费者生产者模型,一个线程往队列中放入数据,一个线程往队列中取数据,取数据前需要判断一下队列中确实有数据,由于这个队列是线程间共享的,所以,需要使用互斥锁进行保护,一个线程在往队列添加数据的时候 阅读全文

posted @ 2021-08-03 18:05 tycoon3 阅读(173) 评论(0) 推荐(0) 编辑

std::lock_guard unique_lock
摘要:/* *lock_guard C++源码 内容也比较简单 *私有化了拷贝构造和赋值拷贝 *在内部对锁和构造和析构进行了适配 */ template<class _Mutex> class lock_guard<_Mutex> { // specialization for a single mute 阅读全文

posted @ 2021-08-03 16:43 tycoon3 阅读(87) 评论(0) 推荐(0) 编辑

C++中push_back和emplace_back的区别
摘要:将 emplace_back() 和 push_back() 中区别最大的程序拎出来看: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, std::forward<_Args>(__args)...); // empl 阅读全文

posted @ 2021-08-03 14:50 tycoon3 阅读(245) 评论(0) 推荐(0) 编辑

C++11 CAS无锁函数compare_exchange_weak的使用
摘要:#include <iostream> // std::cout #include <atomic> // std::atomic #include <thread> // std::thread #include <vector> // std::vector // a simple global 阅读全文

posted @ 2021-08-03 11:49 tycoon3 阅读(2693) 评论(0) 推荐(0) 编辑

C++11新特性之 rvalue Reference(右值引用)
摘要:#include <iostream> int getValue () { int ii = 10; return ii; } int main() { std::cout << getValue(); return 0; } root@ubuntu:~/c++# g++ -std=c++11 ri 阅读全文

posted @ 2021-08-03 10:49 tycoon3 阅读(67) 评论(0) 推荐(0) 编辑

C++ auto和decltype的区别
摘要:#include <iostream> using namespace std; int main() { int n = 10; int &r1 = n; //auto推导 auto r2 = r1; r2 = 20; cout << n << ", " << r1 << ", " << r2 < 阅读全文

posted @ 2021-08-03 10:38 tycoon3 阅读(197) 评论(0) 推荐(0) 编辑

C++中的std::async
摘要:1、std::async函数原型: template<class Fn, class... Args> future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args); 功能:第二个 阅读全文

posted @ 2021-07-30 11:14 tycoon3 阅读(666) 评论(0) 推荐(0) 编辑

C++11 学习笔记 std::function和bind绑定器
摘要:1.1 可调用对象(Callable Objects) 可调用对象有如下几种: 函数指针 具有operator()成员函数的类对象(仿函数) 可被转换为函数指针的类对象 类成员(函数)指针 以上涉及的对象可以像一个函数一样做调用操作,统称为可调用对象。现在,C++11通过提供std::functio 阅读全文

posted @ 2021-07-30 09:49 tycoon3 阅读(427) 评论(0) 推荐(0) 编辑

spinlock in c++11 based on atomic_flag std::memory_order_acquire
摘要:C++原子库中仅保证atomic_flag是保证无锁的,而atomic< int>,atomic< bool>不是 spinlock.h #ifndef _SPINLOCK_H_20170410_ #define _SPINLOCK_H_20170410_ #include <atomic> cla 阅读全文

posted @ 2021-07-29 18:09 tycoon3 阅读(245) 评论(0) 推荐(0) 编辑

c++ nullptr
摘要:nullptr使用代码如下: int *ptr = nullptr; 大家对此有过疑问吗,都是表示空指针,之前NULL使用的好好的,为什么要引入nullptr,nullptr和NULL又有什么区别呢? 首先看下NULL究竟是什么? 源码在此: #ifndef NULL #ifdef __cplusp 阅读全文

posted @ 2021-07-29 18:06 tycoon3 阅读(296) 评论(0) 推荐(0) 编辑

C++11 新特性: unordered_map 与 map 的对比
摘要:unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序, 存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索 阅读全文

posted @ 2021-07-29 17:05 tycoon3 阅读(909) 评论(0) 推荐(0) 编辑

C++11新特性之 default and delete
摘要:default c++11 引入 default 特性,多数时候用于声明构造函数为默认构造函数,如果类中有了自定义的构造函数,编译器就不会隐式生成默认构造函数,如下代码: struct A { int a; A(int i) { a = i; } }; int main() { A a; // 编译 阅读全文

posted @ 2021-07-29 16:13 tycoon3 阅读(235) 评论(0) 推荐(0) 编辑

c++11特性initializer_list
摘要:一、概念 initializer_list是C++11中提供的一种标准库类型(ps:其实也是一个模板类),用于表示某种使用特定类型的值的数组。 initializer_list中的值都是常量值,无法修改。 二、提供的操作(以int型举例) 申明: initializer_list<int> lst; 阅读全文

posted @ 2021-07-29 10:53 tycoon3 阅读(289) 评论(0) 推荐(1) 编辑

委托构造函数
摘要:#include <iostream> using namespace std; class A { private: int i=5; string str="init value"; public: A(){ str="A()"; i=99; } A(int ii):A(){ //不能写成AA( 阅读全文

posted @ 2021-07-28 15:30 tycoon3 阅读(149) 评论(0) 推荐(0) 编辑

LISTEN 状态的 Recv-Q Send-Q
摘要:ESTAB 状态下的 Recv-Q Send-Q 分别表示内核协议栈的发送缓冲区和接受缓冲区中保存的内容字节数。 在 Linux 上,TCP 的三次握手在内核里完成。内核通过一个半连接和已连接 2 个队列来实现。 已连接队列的大小由 net.core.somaxconn 和 int listen(i 阅读全文

posted @ 2021-05-18 15:54 tycoon3 阅读(439) 评论(0) 推荐(0) 编辑

tcp paws
摘要:root@ubuntu:~# netstat -s | grep reject 71 packetes rejected in established connections because of timestamp root@ubuntu:~# netstat -s | grep reject 7 阅读全文

posted @ 2021-05-18 09:04 tycoon3 阅读(98) 评论(0) 推荐(0) 编辑

c++ queue
摘要:1、定义 2、核心接口 queues主要由成员函数push(),front(),back(),pop()构成。 push()将元素置入queue中。 front()会返回queue内的下一个元素(也就是第一个被置入的元素) back()会返回queue的最后一个元素(也就是最后一个被插入的元素) p 阅读全文

posted @ 2021-05-17 17:16 tycoon3 阅读(1536) 评论(0) 推荐(0) 编辑

1 2 3 下一页

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示