
c语言与多线程编程
lbaihao
zephyr,data structure, algorithm, protocol,darknet,architecture
展开
-
多线程的那点儿事(之死锁)
相信有过多线程编程经验的朋友,都吃过死锁的苦。除非你不使用多线程,否则死锁的可能性会一直存在。为什么会出现死锁呢?我想原因主要有下面几个方面: (1)个人使用锁的经验差异 (2)模块使用锁的差异 (3)版本之间的差异 (4)分支之间的差异 (5)修改代码和重构代码带来的差异 不管什么原因,死锁的危机都是存在的。那么,通常出现的死锁都有转载 2016-09-24 00:00:39 · 805 阅读 · 0 评论 -
Windows Socket 非阻塞模式开发
非阻塞套接字 非阻塞模式是指:套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式。 非阻塞套接字在处理同时建立的多个连接等方面具有明显的优势。但是使用过程中有一定的难度。由于函数在操作没有完成后也仍然会返回,为了实现某些功能必须循环调用,直到完成功能为止。因此非阻塞模式会使程序效率非常低。 把套接字设置为非阻塞模式,即告诉系转载 2017-07-29 15:38:39 · 679 阅读 · 0 评论 -
strtok、strtok_s、strtok_r 字符串分割函数
1、strtok函数函数原型:char * strtok (char *str, const char * delimiters);参数:str,待分割的字符串(c-string);delimiters,分割符字符串。该函数用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现原创 2017-07-20 12:37:39 · 337 阅读 · 0 评论 -
c++多线程编程
一直对多线程编程这一块很陌生,决定花一点时间整理一下。os:ubuntu 10.04 c++1.最基础,进程同时创建5个线程,各自调用同一个函数[html] view plain copy #include iostream> #include pthread.h> //多线程相关操作头文件,可移植众多平台 using namespace std;转载 2016-11-04 21:14:39 · 309 阅读 · 0 评论 -
多线程的那点儿事(之windows锁)
在windows系统中,系统本身为我们提供了很多锁。通过这些锁的使用,一方面可以加强我们对锁的认识,另外一方面可以提高代码的性能和健壮性。常用的锁以下四种:临界区,互斥量,信号量,event。 (1)临界区 临界区是最简单的一种锁。基本的临界区操作有,[cpp] view plain copyprint?Initial转载 2016-09-24 00:08:52 · 495 阅读 · 0 评论 -
多线程的那点儿事(之自旋锁)
自旋锁是SMP中经常使用到的一个锁。所谓的smp,就是对称多处理器的意思。在工业用的pcb板上面,特别是服务器上面,一个pcb板有多个cpu是很正常的事情。这些cpu相互之间是独立运行的,每一个cpu均有自己的调度队列。然而,这些cpu在内存空间上是共享的。举个例子说,假设有一个数据value = 10,那么这个数据可以被所有的cpu访问。这就是共享内存的本质意义。 我们可以看一段Lin转载 2016-09-24 00:06:22 · 323 阅读 · 0 评论 -
多线程的那点事儿(之数据互斥)
在多线程存在的环境中,除了堆栈中的临时数据之外,所有的数据都是共享的。如果我们需要线程之间正确地运行,那么务必需要保证公共数据的执行和计算是正确的。简单一点说,就是保证数据在执行的时候必须是互斥的。否则,如果两个或者多个线程在同一时刻对数据进行了操作,那么后果是不可想象的。 也许有的朋友会说,不光数据需要保护,代码也需要保护。提出这个观点的朋友只看到了数据访问互斥的表象。在程序的运行空间转载 2016-09-24 00:05:23 · 309 阅读 · 0 评论 -
多线程的那点儿事(之数据同步)
多线程创建其实十分简单,在windows系统下面有很多函数可以创建多线程,比如说_beginthread。我们就可以利用它为我们编写一段简单的多线程代码,[cpp] view plain copyprint?#include #include #include unsigned int value = 0; void print转载 2016-09-24 00:04:10 · 231 阅读 · 0 评论 -
多线程的那点儿事(基础篇)
多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程?当然,要了解到多进程,就要涉及到操作系统。不过大家也不要紧张,听我慢慢道来。这其中的环节其实并不复杂。 (1)单CPU下的多线程 在没有出现多核CPU之前,我们的计算资源是唯一的。如果系统中有多个任务要处理的话,那么就需要按照某种规则依次调度这些任务进行处理。什么规则呢?可以是一些简单的调度方法转载 2016-09-24 00:03:03 · 312 阅读 · 0 评论 -
多线程的那点儿事(之多线程调试)
软件调试是我们软件开发过程中的重要一课。在前面,我们也讨论过程序调试,比如说这里。今天,我们还可以就软件调试多讲一些内容。比如说条件断点,数据断点,多线程断点等等。[cpp] view plain copyprint?#include int value = 0; void test() { int total; in转载 2016-09-24 00:01:45 · 273 阅读 · 0 评论 -
arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
目录命名规则 实例1、arm-none-eabi-gcc2、arm-none-linux-gnueabi-gcc3、arm-eabi-gcc4、armcc5、arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gccCodesourceryABI 和 EABIarm-linux-gnueabi-g原创 2017-11-13 09:28:44 · 300 阅读 · 0 评论