• 等级
  • 9418 访问
  • 20 原创
  • 1 转发
  • 293014 排名
  • 1 评论
  • 5 获赞

线程同步之条件变量

相关函数 int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);初始化一个条件变量;也可以直接定义的方式初始化:pthread_cond_t cond = PTHREAD_COND_INITIALIZER(只能使用默认参数设定); int pthread_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()原型为int prctl (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

主要函数说明 int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)创建一个锁; int pthread_mutex_destroy (pthread_mutex_t *__mutex)销毁锁; int pthread_mutex_trylock (pthread_mute...

2018-05-08 23:57:34

让printf打印更加丰富多彩

基本原理 在支持ANSI color控制的终端上,可用通过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() 原型为int clock_gettime (clockid_t __clock_id, struct timespec *__tp); 获取当前系统时间,示例: /** * clock_gettime()的第一个参数可以如下设定: * CLOCK_REALTIME:获取当前系统的绝对时间,从UTC1970-1-1 0:0:0开始计时; ...

2018-05-01 23:11:07

linux消息队列操作

基本函数说明 int msgget (key_t __key, int __msgflg),创建消息队列;或者返回已经存在的消息队列的ID; int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf),消息队列控制,如删除消息队列,获取消息队列的信息等; ssize_t msgrcv (int __msqid, void *__msg...

2018-05-01 14:59:19

linux下pthread基本操作

常用pthread函数 int pthread_attr_init (pthread_attr_t *__attr), 初始化pthread创建参数; int pthread_attr_destroy (pthread_attr_t *__attr),销毁pthread创建参数; int pthread_attr_getdetachstate (const pthread_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编译libjpeg libjpeg解码jpeg图片 解码调用流程如下: static bool _jpgToRGBColor(PICTUREINFO picInputInfo, PICTUREINFO *picOutputInfo) { struct jpeg_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这种轻量级的校验算法在嵌入式开发中使用非常广泛,比如User data的存储,非关键数据的 保存(对于重要数据,一般不建议只用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, just for testing; """import sys import os import re from os.path import jo

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下挂载和卸载磁盘分区的系统调用,函数原型分别如下:int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data);int umount(const char *ta

2017-09-27 19:56:11

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

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

2017-09-21 21:47:05

背姑娘的锅

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

    空空如也