上一页 1 ··· 69 70 71 72 73 74 75 76 77 ··· 101 下一页
摘要: 函数式编程有两个最基本的运算:合成和柯里化。 2.1 函数的合成 如果一个值要经过多个函数,才能变成另外一个值,就可以把所有中间步骤合并成一个函数,这叫做"函数的合成"(compose)。 上图中,X和Y之间的变形关系是函数f,Y和Z之间的变形关系是函数g,那么X和Z之间的关系,就是g和f的合成函数 阅读全文
posted @ 2018-01-28 13:56 zzfx 阅读(1505) 评论(0) 推荐(0)
摘要: 理解的含义是建立充分的联系 阅读全文
posted @ 2018-01-28 09:59 zzfx 阅读(159) 评论(0) 推荐(0)
摘要: queue相当于事件处理机制里的事件池;只是任务池; 线程作为事件处理的实施者,由线程池从任务池中获取任务进行调度派发; group相当与工作组,按照任务的相关性对任务进行组织。 阅读全文
posted @ 2018-01-28 00:52 zzfx 阅读(201) 评论(0) 推荐(0)
摘要: Volatile variables apply another type of memory constraint to individual variables. The compiler often optimizes code by loading the values for variab 阅读全文
posted @ 2018-01-26 18:56 zzfx 阅读(172) 评论(0) 推荐(0)
摘要: 在内核中或者同步变量中维护着一个同步变量和线程的映射关系。 上述结论只是猜测。 阅读全文
posted @ 2018-01-26 17:44 zzfx 阅读(173) 评论(0) 推荐(0)
摘要: 不变量,临界区和判定条件 不变量(Invariant):程序所做的一些假设,特别是指变量之间的关系。如:一个queue,有头节点,和其它数据节点,这些元素之间的连接关系就是不变量。当程序里面不变量遭受破坏时,后果往往是很严重的,轻则数据出错,重则程序直接崩溃。 临界区(Critical Sectio 阅读全文
posted @ 2018-01-26 17:37 zzfx 阅读(452) 评论(0) 推荐(0)
摘要: 使用线程的几种方式 1. 流水线:每个线程反复地在数据系列集上执行同一种操作,并把操作结果传递给下一步骤的其他线程,这就是“流水线”(assembly line)方式; 2 工作组:每个线程都在自己的数据上执行操作。工作组中的线程可能执行同样的操作,也可能执行不同的操作,但是他们一定独立运行; 3 阅读全文
posted @ 2018-01-26 17:35 zzfx 阅读(279) 评论(0) 推荐(0)
摘要: In concurrent programming, a monitor is a synchronization construct that allows threads to have both mutual exclusion and the ability to wait (block) 阅读全文
posted @ 2018-01-26 17:09 zzfx 阅读(527) 评论(0) 推荐(0)
摘要: 如果互斥锁类型为 PTHREAD_MUTEX_NORMAL,则不提供死锁检测。尝试重新锁定互斥锁会导致死锁。如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或未锁定,则将产生不确定的行为。 如果互斥锁类型为 PTHREAD_MUTEX_ERRORCHECK,则会提供错误检查。如果某个线程尝试重新锁定 阅读全文
posted @ 2018-01-25 23:06 zzfx 阅读(322) 评论(0) 推荐(0)
摘要: 条件变量相当于订阅-发布机制; 或者相当于同步的通知机制; 订阅和发布具有先后顺序;所以需要互斥量来维护顺序。 顺序不对,存在信号丢失问题。 Problem statement[edit] For many applications, mutual exclusion is not enough. 阅读全文
posted @ 2018-01-25 22:17 zzfx 阅读(229) 评论(0) 推荐(0)
摘要: 线程不存在真正的唤醒机制; 所谓的唤醒只是将同步变量置1;在下一个cpu时间片竞争变量,将线程的状态置就绪状态,从而执行; 或者处于自悬状态,有信号释放,立即捕获,从而执行。 阅读全文
posted @ 2018-01-25 22:13 zzfx 阅读(251) 评论(0) 推荐(0)
摘要: 使用条件变量,调用signal/broadcast的时候,无法知道是否已经有线程等在wait上了。因此,一般要先改变条件状态,然后再发送signal/broadcast信号。然后在wait调用线程上先检查条件状态,只有当条件状态为假的时候才进入pthread_cond_wait进行等待,从而防止丢失 阅读全文
posted @ 2018-01-25 20:30 zzfx 阅读(310) 评论(0) 推荐(0)
摘要: pthreads defines a set of C programming language types, functions and constants. It is implemented with a pthread.h header and a thread library. There 阅读全文
posted @ 2018-01-25 17:13 zzfx 阅读(214) 评论(0) 推荐(0)
摘要: 1)独占唯一资源; 2)队列维护的资源; 3)数组维护类资源; 4)状态流程类数据; 阅读全文
posted @ 2018-01-25 11:56 zzfx 阅读(325) 评论(0) 推荐(0)
摘要: 下面的文字均来自其它博客和网页。 参考:http://www.jianshu.com/p/ea9a482ece5f 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。需要明 阅读全文
posted @ 2018-01-24 19:35 zzfx 阅读(262) 评论(0) 推荐(0)
摘要: In software engineering, concurrency patterns are those types of design patterns that deal with the multi-threaded programming paradigm. Examples of t 阅读全文
posted @ 2018-01-24 19:07 zzfx 阅读(213) 评论(0) 推荐(0)
摘要: 1)函数调用栈的构建与销毁; 2)函数调用栈的要素:(1)局部变量;2)调用参数;(3)返回地址、(4)寄存器保存; 阅读全文
posted @ 2018-01-24 16:31 zzfx 阅读(192) 评论(0) 推荐(0)
摘要: In computer science, a calling convention is an implementation-level (low-level) scheme for how subroutines receive parameters from their caller and h 阅读全文
posted @ 2018-01-24 16:20 zzfx 阅读(281) 评论(0) 推荐(0)
摘要: C 语言中函数返回结构体时如果结构体较大, 则在调用函数中产生该结构的临时变量,并将该变量首地址传递给被调用函数,被调用函数返回时根据该地址修改此临时变量的内容,之后在调用函数中再将该变量复制给用户定义的变量,这也正是 C 语言中所谓值传递的工作方式。 如果结构体较小, 则函数返回时所用的临时变量可 阅读全文
posted @ 2018-01-24 15:35 zzfx 阅读(352) 评论(0) 推荐(0)
摘要: 官方说法: 函数pthread_join用来等待一个线程的结束。函数原型为: extern int pthread_join __P ((pthread_t __th, void **__thread_return)); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储 阅读全文
posted @ 2018-01-24 10:52 zzfx 阅读(1455) 评论(0) 推荐(0)
上一页 1 ··· 69 70 71 72 73 74 75 76 77 ··· 101 下一页