- 博客(5)
- 收藏
- 关注
原创 linux同步机制
原子操作: 原子操作是由编译器来保证的,保证一个线程对数据的操作不会被其他线程打断。当线程正在对一个变量操作而这个操作过程不想被其他线程打断时,可以用原子操作,原子操作结构体(atomic_t)原子操作缺点:会阻塞优先级很高的线程。自旋锁:当一个线程在读写一个共享资源时,加上自旋锁,其他想要读写这个共享资源的线程就会一直处于忙等状态,循环检测保持者已经释放了锁,互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁。(重点:忙等、读写均会锁住)读写锁:CPU内的一个结构体(
2020-08-29 11:40:51 101 1
原创 常见通信接口
常见通信异步通信:异步通信中的接收方并不知道数据什么时候会到达,收发双方可以有各自自己的时钟。发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。这种传输通常是很小的分组,比如一个字符为一组,为这个组配备起始位和结束位。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在低速的传输中。举个例子,我们的键盘按下一个按键,发出一个字符信号,异步传输机制就会为它加上前后的辅助同步信息,帮助接收方识别到我们按下了哪一个按键。因为我们敲击键盘的节奏不固定,
2020-07-02 14:21:36 2107
原创 C/C++ 常见问题
1、在x86的机器上,int a=0xabcd1234 char b=((char*)&a)[0]请问b是多少?重点在于X86是小端机器 char只能读取int的一个字节,在加上16进制在小端机上是低位 0x34大端机上读取的是高位0xab2、32位系统下,对于下面的结构体A和B,sizeof(A),sizeof(B)的结果分别是()#include <stdio.h>#pragma pack(2)struct A{ int a; char b; short c
2020-06-21 16:55:02 213
原创 二叉树建立与前序遍历
#include <stdio.h>#include<stdlib.h>#include<string.h>typedef char elemtype;typedef struct bitnode{ char data; struct bitnode *lchild,*rchild;}bitnode,*bitree;//创建二叉树,约定用户遵照前序遍历的方式输入数据Createbitree(bitree *T){ char c; sc
2020-06-21 16:54:04 194
转载 C++多态
C++多态派生类对象的地址可以赋值给基类指针。对于通过基类指针调用基类和派生类中都有的同名、同参数表的虚函数的语句,编译时并不确定要执行的是基类还是派生类的虚函数;而当程序运行到该语句时,如果基类指针指向的是一个基类对象,则基类的虚函数被调用,如果基类指针指向的是一个派生类对象,则派生类的虚函数被调用。这种机制就叫作“多态(polymorphism)”。所谓“虚函数”,就是在声明时前面加了 virtual 关键字的成员函数。virtual 关键字只在类定义中的成员函数声明处使用,不能在类外部写成员函数体
2020-06-19 11:04:29 90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人