首页 › 分类存档 › UC

Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥)

介绍:什么是线程,线程的优点是什么

线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。 一个进程可以有很多线程,每条线程并行执行不同的任务。

线程可以提高应用程序在多核环境下处理诸如文件I/O或者socket I/O等会产生堵塞的情况的表现性能。在Unix系统中,一个进程包含很多东西,包括可执行程序以及一大堆的诸如文件描述符地址空间等资源。在很多情况下,完成相关任务的不同代码间需要交换数据。如果采用多进程的方式,那么通信就需要在用户空间和内核空间进行频繁的切换,开销很大。但是如果使用多线程的方式,因为可以使用共享的全局变量,所以线程间的通信(数据交换)变得非常高效。

Hello World(线程创建、结束、等待)

继续阅读 »

Linux cmake入门使用

1.cmake 的使用

  1)创建一个工程目录文件夹,然后创建一个hello.c

继续阅读 »

linux程序编译期加入编译时间和svn版本号

通常我们在程序开发时会加入版本查询命令,如:“-v”,此时一般会显示build版本,以及build日期等,因此如果每次编译时能自动添加这些信息的话,就非常方便了。
继续阅读 »

linux下protobuf示例(详细)

写消息文件:msg.proto

将消息文件msg.proto映射成cpp文件
protoc -I=. –cpp_out=. msg.proto
可以看到生成了
msg.pb.h 和msg.pb.cc
继续阅读 »

protobuf-2.5.0.tar.gz的下载与安装

1.下载
hadoop使用protocol buffer进行通信,需要下载和安装 protobuf-2.5.0.tar.gz。由于现在 protobuf-2.5.0.tar.gz已经无法在官网https://code.google.com/p/protobuf/downloads/list中 下载了,本人将 protobuf-2.5.0.tar.gz上传到百度云盘供大家下载,地址: http://pan.baidu.com/s/1pJlZubT 。
继续阅读 »

SFTP客户端代码示例

环境:libssh2 1.4.3、zlib-1.2.8、openssl-1.0.1g

Author: Kagula

最后更新日期:2014-5-18

从http://www.libssh2.org/下载libssh2-1.4.3.tar.gz文件,解压后打开libssh2.dsw文件升级项目到VisualStudio 2013,里面有两个项目,只要编译libssh2项目就可以了。编译前需要添加zlib和openssl的头文件和库文件链接位置,如果编译libssh2提示找不到msvcrt.lib,为链接库添加下面的路径
继续阅读 »

搭建ssh2协议的开发环境:openssl+libssh2库+Visual Studio 2008

ActivePerl + OpenSSL + Zlib + Libssh2 + Visual Studio 2008

  SSH2是一套安全通讯协议框架(早期的SSH1由于存在安全漏洞,现在已经不用了),基于SSH2协议的产品目前主要有openssh(http://www.openssh.org/ ),putty(http://www.putty.org/ ),SSH Secure Shell Client(从http://www.moodisk.com/zh_CN/index.html?src=download.php 可以下载)等,这些都是开源的,但是这些代码非常难懂而且复杂,一个个函数深层次的调用很快就让人在C语言代码的海洋中迷失了方向,妄图通过从这些开源软件中抽取程序代码段来“组装”自己的应用程序是非一般人所能实现的。不过还好网路上出现了一些开源的SSH2开发库,利用 继续阅读 »

自己封装vector

自己封装的vector
继续阅读 »

LINUX环境并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。
继续阅读 »

Linux网络编程之高级并发服务器

1. 介绍

在上一节,我们介绍了Linux简单的并发服务器,通过在服务器端建立多个子进程,来接收客户端的请求,实现并发处理,但这种方式明显有缺陷,服务器并不知道客户端请求的数量,所以事先建立的进程数不好确定。所以,这里介绍三种高级并发服务器模式。第一种是服务器端统一accept,接收客户端的到来,然后为每个客户端分配一个进程去处理.
继续阅读 »