对于boost线程库,提供了线程根据条件进行挂起唤醒的功能。之前看过使用linux标准线程库做过的一些实验,想知道boost线程库的特性是否也一样。
linux线程的唤醒机制与windows的不同。
在windows下如果执行了线程唤醒操作,该唤醒操作会等待第一个挂起的线程,当系统中有线程挂起的时候,就对其进行唤醒。其生存周期一直到其执行完一次唤醒任务结束。
在linux下,如果执行唤醒操作,该唤醒操作会立刻执行,如果系统中没有挂起的线程,那么该操作就会立刻执行结束,如果有线程在操作执行结束后挂起,则
不会被唤醒。唤醒操作的生存周期是,执行操作的瞬间,有线程挂起就唤醒,没有操作结束。不像windows那样,等待第一个需要的唤醒操作到达。
经过测试,boost线程库在linux上的唤醒操作也遵从上面的特性。测试代码如下:
测试环境:centos ubuntu
boost版本: 1.41.0
#include <stdlib.h>
#include<iostream>
#include<boost/thread/condition.hpp>
#include<boost/thread/locks.hpp>
#include<boost/thread/mutex.hpp>
#include &l ......
Linux系统下安装VMware虚拟机
Linux系统
在Linux 下,VMware 提供了两种按装包:tar 包和RPM 包 其中,后者更容易安装,这里以Redhat Linux 9系统为例。
使用tar 包安装
登陆Linux 主机
[sanren@localhost sanren]$
登陆到管理员权限
[sanren@localhost sanren]$ su -
Password:
[root@localhost root]#
进入临时目录
[root@localhost root]# cd /tmp
解压缩tar 包
[root@localhost tmp]# tar –zxvf VMware-workstation-6.0.0-45731.i386.tar.gz
执行安装命令
[root@localhost tmp]# cd ./vmware-distrib/vmware-install.pl
开始安装
Installing the content of the package.
选择二进制文件安装路径
In which directory do you want to install the binary files?
[/usr/bin]
选择库文件安装路径
In which directory do you want to install the library files?
[/usr/lib/vmware]
选择操作手册文件安装路径
In which directory do you want to install the manual files?
[/usr/share/man]
选择文档文件安装路径
In which directory do you want to install the documentation files?
[/usr/share/doc/vmware]
The ......
以管理员身份进入Linux,修改文件:/etc/inittab
找到“id:5:initdefault:”,其中的5就是X-Window,为默认运行级别,一般我们把5改为3即可。
一共有7种启动级别,分别为:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x下的安全模式类似。
2 为多用户模式,但是没有NFS支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是X11,进到X Window系统了。
6 为重启,运行init 6机器就会重启。
0和6一般不用;
运行startx可启动到级别5。 ......
Linux系统信息查看命令大全
版权声明
:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds
以及本声明。
<!--
google_ad_client = "pub-3705997236397030";
//文章内容右侧广告
google_ad_slot = "1819082211";
google_ad_width = 120;
google_ad_height = 240;
//-->
最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。
想起以前写过的一篇其实Linux这样用更简单
,
发现这些系统信息查看命令也可以总结出一篇小小的东西来了。
另外这里
还有非常多的命令,
可以作为参考。
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h ......
Liux 下静态库和动态库的浅析 收藏
本文主要解决以下几个问题
1 为什么要使用库?
2 库的分类
3 创建自己的库
或许大家对自己初学linux时的情形仍记忆尤新吧。如果没有一个能较好的解决依赖关系的包管理器,在linux下安装软件将是一件及其痛苦的工作。你装 a包时,可能会提示你要先装b包,当你费尽心力找到b包时,可能又会提示你要先安装c包。我就曾被这样的事搞的焦头烂额,至今一提起rpm仍心有余悸,头 皮发麻。说是一朝被蛇咬,十年怕井绳怕也不为过。
linux下之所以有这许多的依赖关系,其中一个开发原则真是功不可没。这个原则就是:尽量不重复做别人已经做过的事。换句话说就是尽量充分利用别人的劳动成果。
这就涉及到如何有效的进行代码复用。
1 为什么要使用库?
关于代码复用的途径,一般有两种。
粘贴复制
这是最没有技术含量的一种方案。如果代码小,则工作量还可以忍受,如果代码很庞大,则此法不可取。即便有人原意这样做,但谁又能保证所有的代码都可得到呢?
而库的出现很好的解决了这个问题。
库,是一种封装机制,简单说把所有的源代码编译成目标代码 ......
1. 如何在Linux上使用光驱 (试验机:ubuntu 9.04/9.10)
sudo eject (open)
sudo eject -t (close)
sudo mount -t iso9660 -o ro /dev/cdrw /media/tmp_disk/ (mount)
2.dpkg命令
安装deb软件包
sudo dpkg -i *.deb
获得pc上所有安装软件包的信息
sudo dpkg --get-selections > pkg.list ......