3 酸菜。

尚未进行身份认证

我要认证

爱生活,爱TXJ。

等级
TA的排名 4w+

线程同步方式之信号量学习

/*#include<semaphore.h>二进制信号量:线程同步的一种机制int sem_init(sem_t *sem, int pshared, unsigned int value);说明:信号量初始化函数,第一个参数指向一个信号量对象,第二个参数为零代表这个信号量是当前进程的一个局部信号量,第三个参数为信号量的初始值int sem_wait(sem_t *sem);说明:以原子操作方式给信号量减一(信号量值要大于0),值为0时,该函数就会阻塞,直到信号量的值被其它线程进行

2020-07-29 18:55:35

snmp学习

转载:https://blog.csdn.net/qq_28657577/article/details/81699430

2020-07-14 17:48:42

线程属性学习

pthread_attr_t :是一个用来设置线程属性的一个数据类型,为一个结构体,里面包含多个线程属性的设置。线程属性用一个结构体来设置:typedef struct{ int detachstate; 线程的分离状态(子线程可以脱离主线程运行,这时子线程到后台运行了) int schedpolicy; 线程调度策略(SCHED_OTHER 分时调度策略,SCHED_FIFO实时调

2020-07-13 23:02:59

线程同步方式之互斥量

#include<pthread.h>#include<stdio.h>#include<unistd.h>#include <stdlib.h>#include<string.h>int lfx=0;pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; //对mutex进行初始化void* writer(void *);int main(int argc, char **argv)

2020-07-13 22:08:28

线程死锁演示

#include<pthread.h>#include<stdio.h>#include<unistd.h>#include <stdlib.h>#include<string.h>void *thread_function1(void *arg);void *thread_function2(void *arg);int students=0;pthread_mutex_t work_mutex1;pthread_mutex_t

2020-07-11 13:05:29

makefile小结

<一>. 变量高级用法a. 替换变量中的共有部分,格式: $(var:a=b) 或是 ${var:a=b}意思是把变量var中所有以a字串结尾的a替换成b字串.示例:foo := a.o b.o c.obar := $(foo:.o=.c)$(bar)展开的值就是a.c b.c c.c类似的替换为“静态模式"bar := $(foo:%.o=%.c) 展开后跟上例一个效果。b. 变量赋值obj = a.o b.o 一般赋值,可以引用前后面的变量obj :

2020-07-07 13:49:28

source insight3.5 基本使用教程

参考·:https://blog.csdn.net/taotongning/article/details/82432555

2020-07-07 11:07:38

makefile中$@ $^ $「的使用

main.c#include"print2.h"int main(void){ print1("hello1"); print2("hello2"); return 0;}print1.c#include<stdio.h>void print1(char *p){ printf("%s\n",p);}print2.c#include<stdio.h>void print2(char *p){ printf("%s\n",p);}prin

2020-07-06 11:00:39

单一继承情况下有this指针的偏移情况分析

一:单一继承情况下,父类没有虚函数,子类有虚函数的this指针偏移分析。#include <iostream>using namespace std;class base{public: int m_bi = 0; base() { printf("base this is %p\n", this); }};class A :public base{public: int m_i = 0; int m_j = 0;

2020-07-01 22:26:43

单类单继承虚函数下的数据成员布局

一:单个类带虚函数的数据成员布局#include <iostream>using namespace std;class A{public: int m_i=0; int m_j = 0;public: virtual void fun(){ }};int main(){ A a; cout<<sizeof(a)<<endl; printf("A::m_i = %d\n", &A::m_i);/

2020-06-30 22:17:44

单纯的类不纯时引发的虚函数调用问题

#include<iostream>using namespace std;class X{public: int m_i; int m_j; int m_k;public: X() { memset(this,0,sizeof(X));//用于初始化,3个成员变量初值为0 cout<<"构造函数被调用"<<endl; } X(const X&am

2020-06-27 11:31:30

git checkout filename命令的使用

(1)git status看下状态(2)查看a.c文件的内容(3)修改a.c文件的内容(修改成aaabb)因为这里修改了a.c文件的内容,所以这里多了一些信息。(4)将a.c添加到暂存区(5)再次修改a.c文件的内容(修改从aaabbo)所以这里既有新增的信息,也有原来添加到缓冲区的信息。(6)使用git checkout a.c指令以后,a.c文件的内容已经发生了变化。(7)看下状态,这时a.c处于缓冲区状态,可用git restore --staged指令将a.c从缓冲区回退

2020-06-26 20:13:06

git restore指令和git restore --staged 的使用

一:git restore指令(1)先用git status看一下状态(2)打开a.c添加点内容(原本内容是aaa)(3)再用git status看一下状态此时a.c的状态是刚刚更改过,但是还没有用git add指令添加到暂存区中,也就是说a.c目前处于工作区下。(4)使用git restore也就是:git restore a.c(5)用git status看一下状态(6)最后看一下a.c中的内容结论:git restore指令使得在工作空间但是不在暂存区的文件撤销更改(内容恢

2020-06-26 17:31:36

虚函数表指针以及虚函数表创建时机

一:虚函数表指针(vptr)创建时机vptr跟着对象走,所以对象什么时候创建出来,vptr就什么时候创建出来,也就是运行的时候。当程序在编译期间,编译器会为构造函数中增加为vptr赋值的代码(这是编译器的行为),当程序在运行时,遇到创建对象的代码,执行对象的构造函数,那么这个构造函数里有为这个对象的vptr赋值的语句。二:虚函数表创建时机虚函数表创建时机是在编译期间。编译期间编译器就为每个类确定好了对应的虚函数表里的内容。所以在程序运行时,编译器会把虚函数表的首地址赋值给虚函数表指针,所以,这个虚

2020-06-26 15:27:00

虚函数表分析(单继承情况和多继承情况)

单继承:#include<iostream>#include<stdio.h>using namespace std;class A{public: virtual void x() {cout<<"x()"<<endl;} virtual void y() {cout<<"y()"<<endl;} virtual void z() {cout<<"z()"<<endl;}

2020-06-26 11:14:28

继承关系作用下的虚函数手工调用

#include<iostream>#include<stdio.h>using namespace std;class A{public: virtual void x() {cout<<"x()"<<endl;} virtual void y() {cout<<"y()"<<endl;} virtual void z() {cout<<"z()"<<endl;}};c

2020-06-25 20:41:42

消息队列学习

接收方:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<errno.h>#include<unistd.h>#include<sys/msg.h>struct my_msg_st{ long int my_msg_type; char some_text[BUFSIZ];};int main(){ int run

2020-06-25 10:55:30

虚函数表指针位置分析

#include<iostream>using namespace std;class A{public: int i; virtual void fun() { }};int main(void){ //类中有虚函数就会有虚函数表指针的存在,这个指针指向虚函数表开始地址,而每个虚函数表指针指向各自虚函数 A a; int length=0; length=sizeof(a); cout<<len

2020-06-25 10:49:17

验证两个多线程是同时执行程序的一个例程

#include<pthread.h>#include<stdio.h>#include<unistd.h>#include <stdlib.h>#include<string.h>void *thread_function(void *arg);int run_now=1;int main(){ int ret; pthread_t a_thread; ret=pthread_create(&a_

2020-06-21 22:35:12

多线程学习

#include<pthread.h>#include<stdio.h>#include<unistd.h>#include <stdlib.h>#include<string.h>char message[]="Hello world!";void *thread_function(void *arg);int main(){ int ret; pthread_t a_thread; void *thre

2020-06-21 22:19:51

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。