os

用信号量机制解决生产者消费者问题

南笙酒味 提交于 2020-12-14 09:15:33
使用POSIX标准中的Pthreads API来创建多个生产者、消费者线程 定义线程:pthread_t tid 创建线程:pthread_create(&tid,&attr,runner,argv[1]); join线程:pthread_join(tid,NULL); 使用PthreadsAPI的信号量机制互斥与同步 定义信号量:sem_t sem 初始化信号量:sem_init(&sem, 0, n); P操作:sem_wait(&sem); V操作:sem_post(&sem); #include <stdio.h> #include <pthread.h> #include <semaphore.h> #define BUFF_SIZE 5 // 定义缓冲区buffer大小为5 int buffer[BUFF_SIZE]; // 用循环队列模拟缓冲区 int in = 0; // 产品进缓冲区时的缓冲区下标 int out = 0; // 产品出缓冲区时的缓冲区下标 int productID = 0; // 产品号 int consumeID = 0; // 将被消耗的产品号 sem_t s; // 定义互斥信号量, 互斥锁s sem_t n; // 定义同步信号量n, buffer中已放入的产品个数 sem_t e; // 定义同步信号量e, buffer中空单元个数

ARM Linux 3.x的设备树(Device Tree)

心已入冬 提交于 2020-11-27 01:46:39
原文地址: http://blog.csdn.net/21cnbao/article/details/8457546 1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data。读者有兴趣可以统计下常见的s3c2410、s3c6410等板级目录,代码量在数万行。 社区必须改变这种局面,于是PowerPC等其他体系架构下已经使用的Flattened Device Tree(FDT)进入ARM社区的视野。Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF)。在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm

字体英文名

隐身守侯 提交于 2020-11-21 12:18:07
好难记的字体英文名 Pmingliu新细明体 SimSun宋体 SimKai楷体 SimFang仿宋 SimLi隶书 字体名好难记住啊~.~ Font-Family: "宋体"; >> Font-Family: SimSun ; Font-Family: "新细明体"; >> Font-Family: Pmingliu ; SimYou 幼圆 SimHei 黑体 SimKai 楷体 SimFang 仿宋 SimLi 隶书 ----------------------------------- 分割线 ------------------------------------------- css字体中文、英文、Unicode名对照表 中文名 英文名 Unicode Unicode 2 Mac OS 华文细黑 STHeiti Light [STXihei] /534E/6587/7EC6/9ED1 华文细黑 华文黑体 STHeiti /534E/6587/9ED1/4F53 华文黑体 华文楷体 STKaiti /534E/6587/6977/4F53 华文楷体 华文宋体 STSong /534E/6587/5B8B/4F53 华文宋体 华文仿宋 STFangsong /534E/6587/4EFF/5B8B 华文仿宋 丽黑 Pro LiHei Pro Medium /4E3D/9ED1

Mac OS X Yosemite 上安装 MySql 5.6.26的几个坑

我只是一个虾纸丫 提交于 2020-03-27 17:59:14
3 月,跳不动了?>>> 坑1,缺省端口不是3306 使用mysql-5.6.26-osx10.9-x86_64.dmg安装以后会在“系统偏好设置”中添加一个“MySql”控制面板 但是启动MySql Server的端口有可能为3307不是缺省的3306,如果想使用3306需要修改配置文件 /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist <string>--port=3307</string> 改为 <string>--port=3306</string> 坑2,缺省用户root没有密码,客户端不能连接MySql shell> mysql -u root mysql mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE User = 'root'; mysql> FLUSH PRIVILEGES; 坑3,客户端还有可能还是连接不上 需要配置TCP/IP连接管道 sudo mkdir /var/mysql sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock TIPS 为方便执行mysql命令行,还需要配置环境变量,修改bash_profile nano ~/.bash_profile export

VMware® Workstation 11 解锁 unlocker202 Mac OS X

对着背影说爱祢 提交于 2020-03-18 13:15:49
某厂面试归来,发现自己落伍了!>>> ‍ ‍ 注:本文只讲解锁,如果要安装 Mac OS X 的话请移步 这里 (11和10的安装步骤一样,安装系统前硬件兼容类型请选择Workstation 10.0 不然后面会报错),感谢作者分享! 上面是安装要注意的细节! ----------------------------------------------------------------- 下面开始解锁步骤: 1.去这里下载 unlocker2.02 2.去官网下载python2.7 (注意只能是2.7 因为python2.x和3.x差别很大) 不要贪图高版本 ‍ 3.安装python 配置好环境变量(网上有教程 自己搜一下) 4.在任务管理器里结束掉所有vmware的进程和服务(不然后面会报错),结束出错的可以换下顺序 先结束其他服务 5.用管理员身份执行破解文件 windows 运行 win-install.cmd linux 运行 lnx-install.sh Mac 运行 osx-install.sh 没报错的话基本上就完成了,报错了就是进程或者任务没结束完,仔细检查一下系统里还有没有残留和vmware相关的进程和服务! 下面是效果图: 来源: oschina 链接: https://my.oschina.net/u/2285140/blog/368534

Mac / Linux Shell 批量重命名的方法总览

有些话、适合烂在心里 提交于 2020-03-02 19:13:27
Linux Shell 批量重命名的方法总览 0、用类似 GPRename 这样的图形软件进行批量重命名 1、删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 2、把 .jpe 文件后缀修改为 .jpg: rename 's/\.jpe$/\.jpg/' *.jpe 3、把所有文件的文件名改为小写: rename 'y/A-Z/a-z/' * 4、将 abcd.jpg 重命名为 abcd_efg.jpg: for var in *.jpg; do mv "$var" "${var%.jpg}_efg.jpg"; done 5、将 abcd_efg.jpg 重命名为 abcd_lmn.jpg: for var in *.jpg; do mv "$var" "${var%_efg.jpg}_lmn.jpg"; done 6、把文件名中所有小写字母改为大写字母: for var in `ls`; do mv -f "$var" `echo "$var" |tr a-z A-Z`; done 7、把格式 *_?.jpg 的文件改为 *_0?.jpg: for var in `ls *_?.jpg`; do mv "$var" `echo "$var" |awk -F '_' '{print $1 "_0" $2}'`; done 8、把文件名的前三个字母变为

Redis研究-3.5 Redis在OS上的安装

回眸只為那壹抹淺笑 提交于 2020-03-01 11:54:27
在OS上安装,一般要求你是安装了Xcode,而且也安装了homebrew,然后使用brew install redis命令来安装就可以了。 执行命令后,就可以在shell上执行redeis-server来启动redis服务端啦。没有使用任何配置文件的时候,你将会看到下面的提示: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf 也就是说,他使用了默认的配置,如果你想要自己的配置,你可以在redis-server命令后面加入自己的配置文件。 在同一台host上,你可以使用redis-cli来连接reds-server. 来源: oschina 链接: https://my.oschina.net/u/197860/blog/525010

OS X 10.10安装 Ruby on Rails V4.2.1教程

徘徊边缘 提交于 2020-02-29 14:51:30
OS X 安装Rails之前要做的准备. 1.更新gem 到最新版本 (root用户更新,或着sudo gem update —system) 2.最好能确保能链接海外国际互联网 3.在OS X中断下面使用xcode-select —install 执行安装xcode-select 这样在安装的时候才不会提示找不到文件 4.以上条件都准备充分了执行 sudo gem intall rails —no-ri —no-rdoc 5.最后在终端执行 rails -v 查看安装的版本 rails -v Rails 4.2.1 祝使用愉快,Rails在OS X上面安装成功. 来源: oschina 链接: https://my.oschina.net/u/227894/blog/392078

Mac OS 搭建phonegap开发环境

北城余情 提交于 2020-02-29 13:26:13
1 首先需要安装NODE.JS ,官网地址 https://nodejs.org/。 2这里提到的是在官网上下载相应的node.js安装包后,在MAC 上无法正常安装的解决办法,本人试验的是node-v0.12.6.pkg,换了几个旧版本依然无法正常安装,那么我们试试另外一种安装方法。 3首先安装 Homebrew :在MAC 上打开Terminal and type ,输入: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 4然后输入brew install node (如果总是下载失败的话,命令换成brew install -v node) 5接下来就是安装cordova ,并创建项目。 来源: oschina 链接: https://my.oschina.net/u/163141/blog/491214

Mac OS X中的JNI调用和实现

回眸只為那壹抹淺笑 提交于 2020-01-07 07:45:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 网上给出的在Windows和Linux操作系统下的JNI编程教程很多,其实无论在哪个系统中都是相似的步骤。总结如下: 编写Java程序文件,要使用调用本地库的类需在static初始化块内使用System.loadLibrary("库名")方法加载。 编译该Java类获得.class文件,并且使用javah -jni 类名获取“类名.h”头文件。 包含该头文件并实现头文件中声明的方法。 编译并生成本地库文件。 将该库文件放置于java.library.path路径(可以通过System.getProperties().get(" java.library.path ")查看该路径)下,即可正常使用该Java类。 唯一不同的处在于本地库文件的编译方式不同。 Windows中,一般使用VisualStudio IDE生成"库名.dll"动态链接库文件。(注意:库文件的命名方式及其重要!) Linux中使用gcc进行编译。一般要使用-I选项包含$JAVA_HOME/include和$JAVA_HOME/include/linux,并使用-fPIC -shared -o lib库名.so生成动态链接库文件。 而在Mac OS X中,采用和Linux和有相似的做法。但是我尝试后发现,无论我将该库文件放置于何处