#include #include #include #include void *thread_function(void *arg);pthread_mutex_t work_mutex;#define WORK_SIZE 1024char work_area[WORK_SIZE];int ti...
分类:
编程语言 时间:
2014-06-19 00:15:42
阅读次数:
326
在多线程编程中,常常需要从主线程传递参数给子线程或在主线程中获得子线程的计算结果,
若使用全局变量实现,必然需要对临界区保护,因此导致大量的切换工作造成效率的低下;
而利用进程间的参数传递可以解决这一问题。
两个方向的参数传递:
1.主线程向子线程传递参数:
通过函数 int pthread_create(pthread_t *thread, const pthread_attr_t *...
分类:
编程语言 时间:
2014-06-16 14:34:54
阅读次数:
242
这是来自知乎的一个问题,由@吴志强提出,有意思的是,他看了大家的回答后,突然顿悟了,同时也发现有人答错了,于是乎,他自己回答了自己的问题。我看完后,发现他分析的很精彩,于是就记录在这。下面是他的自答:
-----------------------------------------------------------------------------
看了之后,我获得了启发,突然觉得这或许...
分类:
其他好文 时间:
2014-06-15 17:47:25
阅读次数:
252
#include #include #include #include void cleanup(){ printf("cleanup\n");}void *test_cancel(void){ pthread_cleanup_push(cleanup,NULL); printf(...
分类:
编程语言 时间:
2014-06-15 13:13:00
阅读次数:
225
以前学习POSIX
THREAD时就不太理解broadcast在什么场景下使用比较合适。因为broadcast的语义是唤醒所有被阻塞的线程。当时的想法是,在系统析构时调用它比较有效,唤醒阻塞的线程,回收线程资源,然后退出系统。今天在做
lock_server 时,才了解到broadcast的用处,它...
分类:
其他好文 时间:
2014-06-12 21:22:40
阅读次数:
555
这篇文章将给出POSIX的pthread实现,c++11的thread库的实现方式。部分源码内容可能摘抄自他人博客,表示此篇文章非绝对原创,感谢。1.
问题描述场景:5个哲学家,5把叉子,5盘意大利面(意大利面很滑,需要两把叉子才能拿起)大家围绕桌子,进行思考与进食的活到,如下图所示。哲学家的活动方...
分类:
其他好文 时间:
2014-06-11 11:58:05
阅读次数:
1236
#include #include #include #include
"ringbuffer.h"static int b_flag = 0;pthread_mutex_t mutex =
PTHREAD_MUTEX_INITIALIZER;#define TX_LOCK(lock) pthr.....
分类:
系统相关 时间:
2014-06-08 20:45:34
阅读次数:
452
互斥锁用于上锁,条件变量则用于等待。条件变量是类型为pthread_cond_t的变量。一般使用如下函数:
#include
int pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);每个条件变量总是有一个互斥锁与之关联。调用...
分类:
系统相关 时间:
2014-06-08 17:45:15
阅读次数:
337
一.线程属性线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。名称::pthread_attr_init/pthread...
分类:
编程语言 时间:
2014-06-05 19:04:55
阅读次数:
318
packagecom.mzsx.concurrent.threadpool;
importjava.util.List;
importjava.util.Vector;
publicclassThreadPool{
privatestaticThreadPoolinstance=null;
//空闲的线程队列
privateList<PThread>idleThreads;
//已有的线程总数
privateintthreadCounter;
privateboolea..
分类:
编程语言 时间:
2014-06-02 04:10:21
阅读次数:
332