• 等级
  • 22953 访问
  • 20 原创
  • 1 转发
  • 151047 排名
  • 1 评论
  • 7 获赞

线程同步之条件变量

相关函数intpthread_cond_init(pthread_cond_t*restrictcond,constpthread_condattr_t*restrictattr);初始化一个条件变量;也可以直接定义的方式初始化:pthread_cond_tcond=PTHREAD_COND_INITIALIZER(只能使用默认参数设定);intpthread_co...

2018-05-14 01:23:47

linux多线程之posix信号量

信号量理解1.在多任务操作系统中,通常资源都是固定数量可用的,比如打印机这个外设;但是需要使用该资源的任务有很多,这时就可以使用到信号量来协调资源的使用了(当然在资源内部用锁也可以达到同样的效果);2.信号量有被操作系统实现为PV操作:P(passeren),消耗资源,对信号量做减一操作;V(vrijgeven),释放资源,对信号量做加一操作;PV操作都是原子操作;3.当任务A需要...

2018-05-13 00:00:48

设定线程运行栈:pthread_attr_setstack()

概述linux在创建线程时,如果使用默认的栈,默认栈的大小通常为8MB,这对内存比较紧张的嵌入式平台来说,是无法接受的巨量内存浪费;pthread_attr_setstack()可以设定线程栈的地址和大小,设定的栈地址必须以linux页面大小对齐,所以这里使用posix_memalign()分配页面对齐的内存;线程的最小栈大小为16KB,小于这个数值pthread_attr_setsta...

2018-05-10 00:29:48

prctl()设定线程名

基本介绍prctl()原型为intprctl(int__option,…);用于控制主进程或者子进程的属性;本文主要介绍使用PR_SET_NAME这个flag设定线程的名字,这个在平常调试中很有帮助,比如想知道哪个线程的CPU占用高;需要包含的头文件为sys/prctl.h;用法:prctl(PR_SET_NAME,(char*)name);其中设定的名字字符串长度不...

2018-05-09 23:41:54

线程同步之互斥锁:pthread_mutex_init,pthread_mutex_lock,pthread_mutex_unlock,pthread_mutex_destroy

主要函数说明intpthread_mutex_init(pthread_mutex_t*__mutex,constpthread_mutexattr_t*__mutexattr)创建一个锁;intpthread_mutex_destroy(pthread_mutex_t*__mutex)销毁锁;intpthread_mutex_trylock(pthread_mute...

2018-05-08 23:57:34

让printf打印更加丰富多彩

基本原理在支持ANSIcolor控制的终端上,可用通过ANSI控制码改变终端的字符的显示方式;所以我们可以通过printf或者cout输出特定ANSI控制码来让后面的字符串输出改变成想要的显示方式;ANSI控制码以ESC作为控制码的开始标记,在C语言中对应转义字符\033;然后以m作为结尾字符;在C中设定ANSI控制码的格式为:\033[控制码1;控制码2;控制码3;…;控制码nm...

2018-05-06 11:01:50

常用ANSI控制码表

【光标控制】控制码说明[X;YH将光标移至第X行,第Y列的位置。[nA光标上移n列。<<若至屏幕顶端则无效>>[nB光标下移n列。<<若至屏幕底端则无效>>[nC光标向右n行。<<若已至屏幕最右端则无效>>[nD光标向左n行。<<若已至屏幕最左端则无效

2018-05-06 01:10:56

linux系统时间获取与设定

clock_gettime()原型为intclock_gettime(clockid_t__clock_id,structtimespec*__tp);获取当前系统时间,示例:/***clock_gettime()的第一个参数可以如下设定:*CLOCK_REALTIME:获取当前系统的绝对时间,从UTC1970-1-10:0:0开始计时;...

2018-05-01 23:11:07

linux消息队列操作

基本函数说明intmsgget(key_t__key,int__msgflg),创建消息队列;或者返回已经存在的消息队列的ID;intmsgctl(int__msqid,int__cmd,structmsqid_ds*__buf),消息队列控制,如删除消息队列,获取消息队列的信息等;ssize_tmsgrcv(int__msqid,void*__msg...

2018-05-01 14:59:19

linux下pthread基本操作

常用pthread函数intpthread_attr_init(pthread_attr_t*__attr),初始化pthread创建参数;intpthread_attr_destroy(pthread_attr_t*__attr),销毁pthread创建参数;intpthread_attr_getdetachstate(constpthread_attr_t*__...

2018-04-30 18:15:33

二分查找算法

二分查找算法简要介绍应用二分查找算法的前提是输入序列有序:升序或者降序;二分查找算法,每次取输入序列seq的中间下标middle对应的值与需要查找的key比较;对于升序序列而言:如果key>seq[middle],则将middle+1作为下一次查找的左边界,右边界不变;如果key<seq[middle],则将middle-1作为下一次查找的右边界,左边界不变;如果ke...

2018-04-15 22:58:23

生成斐波拉契数列

斐波拉契数列介绍斐波拉契数列除了第一个和第二个数为1外,以后的数都是前面两个数之和;数学表示为:F(0)=1,F(1)=1;N>=2;F(N)=F(N-1)+F(N-2);最后产生斐波那契数列如下:1,1,2,3,5,8,13,21,34,55,89,144,…代码实现#include<stdio.h>#includ...

2018-04-15 16:54:38

C实现快速排序

快速排序算法概述快速排序是采用一种分治的策略;对输入的无序序列选择一个基准数,然后将比基准数小的放在左边(序列A),比基准数大的放在右边(序列B)(假设现在排序要求升序排列);然后对序列A和序列B分别再做为第二步的输入序列,重复第二步;递归操作上面两步,直到输入序列只剩下一个元素返回,这样整个原始序列就已经变为有序序列;快速排序的平均时间算法复杂度为O(nlogn),最差的情况下时间...

2018-03-20 13:48:41

基于libjpeg实现的jpeg解码demo

使用的libjpeg版本为jpegsr9b,在上一篇blog有libjpeg在VS2012下的编译步骤:VS2012编译libjpeglibjpeg解码jpeg图片解码调用流程如下:staticbool_jpgToRGBColor(PICTUREINFOpicInputInfo,PICTUREINFO*picOutputInfo){structjpeg_de

2018-01-23 21:31:40

VS2012下编译jpeg编解码库:libjpeg.lib

整个编译工程已经上传到CSDN:libjpeg编译工程工作前准备从IJG网站上下载最新版本的Libjpeg源码,网址如下:http://www.ijg.org/我下载时的版本是:jpegsr9b;当然请安装VS2012的C++编译环境;理清编译libjpeg依赖文件因为我们下载的jpegsr9b.zip解压后不仅仅是包含编译Libjpeg.lib的源文件,也包含很

2018-01-06 17:55:22

CRC32算法实现:python与C

背景CRC32这种轻量级的校验算法在嵌入式开发中使用非常广泛,比如Userdata的存储,非关键数据的保存(对于重要数据,一般不建议只用CRC32去校验其完整性,还会考虑加密处理).在PC端常用脚本语言(例如python)去生成CRC32校验值值,而在嵌入式设备端,由于设备端能力有限,会直接使用C编写的程序去做CRC32校验;python实现CRC32校验算法python实现crc32

2017-12-23 22:30:47

python实现任意位置文件分割

应用场景在嵌入式开发中,常常需要将一个binary文件分割成多个文件,或者将一个binary的某块区域抓成一个单独文件。本篇blog以python为例,实现了以上需求;实现代码#!/usr/bin/python"""./file_split.py,justfortesting;"""importsysimportosimportrefromos.pathimportjo

2017-11-26 17:52:25

win10下Python3.5.4安装流程

一.初始环境介绍cmd进入DOS命令行,敲winver,弹出windows版本信息,如下图:之前在Linux环境下安装过python2.7,这次选择python3.5.4版本安装(据说3.X版本有很多有用的新特性,如编码支持相较2.7更加友善.3.5.4是最近官网release中比较稳定的版本);然后从官网:python官网抓windows对应的python版本,如下:在国内偶尔连接py

2017-10-14 02:24:59

Linux下简单的mount命令实现(自动识别文件系统类型)

背景简述mount()/umount()为Linux下挂载和卸载磁盘分区的系统调用,函数原型分别如下:intmount(constchar*source,constchar*target,constchar*filesystemtype,unsignedlongmountflags,constvoid*data);intumount(constchar*ta

2017-09-27 19:56:11

wordpress安装add-from-server插件问题

小弟最近有在企鹅云上捣鼓一个主机,有尝试安装wordpress。有遇到wordpress只支持上传2MB大小的附件这种问题;所以想办法先将大的媒体文件传到主机,然后再将媒体文件添加到wordpress的数据库中;现将解决方法记录如下:安装rz/sz命令因为在主机上没有安装ftp服务,所以为了方便上传下载文件,有安装rz/sz命令,主机是centos,如下安装方法:yuminstalllrz

2017-09-21 21:47:05

背姑娘的锅

关注
  • 计算机软件/山顶洞人
  • 中国 广东省 深圳市