- 浏览: 1525107 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
先看下面这段程序,主线程创建了三个线程,每个线程中均有一个打印语句。 #include <stdio.h> #include <pthread.h> #include <semaphore.h> void *thread_a(void *in) { printf("I am thread_a\n"); pthread_exit((void *)0); } void *thread_b(void *in) { printf("I am thread_b\n"); pthread_exit((void *)0); } void *thread_c(void *in) { printf("I am thread_c\n"); pthread_exit((void *)0); } int main() { pthread_t a,b,c; /* thread id a, b, c*/ int val; /* used for function return result */ /* create thread a, b, c */ pthread_create(&a, NULL, thread_a, (void *)0); pthread_create(&b, NULL, thread_b, (void *)0); pthread_create(&c, NULL, thread_c, (void *)0); /* main thread waits for termination of a,b,c */ pthread_join(a, (void **)0); pthread_join(b, (void **)0); pthread_join(c, (void **)0); printf("Main thread is over\n"); return 0; } 在Linux下进行编译: gcc -o My_Thread My_Thread.c ./MyThread 得到的输出: I am thread_a I am thread_b I am thread_c Main thread is over 现在我们希望线程C的最先打印,然后线程B打印,最后线程A打印。即三个线程之间的打印有一定的先后关系。看下面程序: #include <stdio.h> #include <pthread.h> #include <semaphore.h> sem_t sem1; sem_t sem2; void *thread_a(void *in) { sem_wait(&sem1); /* wait for sem1 */ printf("I am thread_a\n"); pthread_exit((void *)0); } void *thread_b(void *in) { sem_wait(&sem2); /* wait for sem2 */ printf("I am thread_b\n"); sem_post(&sem1); /* increase sem1 by 1, make thread_a run*/ pthread_exit((void *)0); } void *thread_c(void *in) { printf("I am thread_c\n"); sem_post(&sem2); /* increase sem2 by 1, make thread_b run*/ pthread_exit((void *)0); } int main() { pthread_t a,b,c; /* thread id a, b, c*/ int val; /* used for function return result */ /* init sem1 sem2 to 0 , any thread waits for it will be blocked*/ sem_init(&sem1, 0, 0); sem_init(&sem2, 0, 0); /* create thread a, b, c */ pthread_create(&a, NULL, thread_a, (void *)0); pthread_create(&b, NULL, thread_b, (void *)0); pthread_create(&c, NULL, thread_c, (void *)0); /* main thread waits for termination of a,b,c */ pthread_join(a, (void **)0); pthread_join(b, (void **)0); pthread_join(c, (void **)0); /* destroy sem1 sem2 */ sem_destroy(&sem1); sem_destroy(&sem2); printf("Main thread is over\n"); return 0; } gcc -o My_thread1 My_thread1.c -lpthread ./My_thread1 I am thread_c I am thread_b I am thread_a Main thread is over 可以见到,线程的执行顺序已经改变。
发表评论
-
Linux内核源码包的安装及编译zz
2009-12-15 20:58 4306http://my.donews.com/ecco2005/2 ... -
Linux内核Makefile文件(二)
2009-12-15 19:34 2451=== 6 体系Makefile文 ... -
Linux内核Makefile文件(一)
2009-12-15 19:34 1869本文是/Documentation/kbuild/make ... -
Linux加载模块命令
2009-12-15 19:28 2709安装模块insmod *.ko卸载 ... -
linux内核模块编程
2009-12-15 19:25 3605主题: linux内核模块的程序结构--模块加载函数(必须), ... -
编译linux内核~
2009-12-05 22:04 1421小菜鸟第一次编译linux内核。截图太多 。。不方便上传 = ... -
grub2 基础教程
2009-12-05 18:01 2790grub2基础教程-修订版 ... -
Ubuntu9.10版本没有了menu.lst文件!
2009-12-05 18:00 3150囧~现在都在grub下面配置了。 不过麦斯之前的men ... -
关于信号量与线程互斥锁的区别与实现
2009-11-30 14:37 2426之前一直没有怎么 ... -
Linux信号量线程控制
2009-11-30 14:31 3688线程中互斥锁的使用,达到对共享资源互斥使用。除了使用互斥锁, ... -
信号量和自旋锁
2009-11-29 21:56 1666内核同步措施 ... -
Linux信号量semaphore编程实例
2009-11-29 21:20 6591本例示范Linux信号量的基本用法。该范例使用了两个线程分别对 ... -
Linux获取当前时间
2009-11-29 21:16 3689Linux获取当前时间 ... -
信号量的基本思想
2009-11-29 20:17 1490信号量是1965荷兰Dijkstra 为了解决并发进程问题 ... -
多进程通信方式一:管道(PIPE)
2009-11-27 18:29 9117进程通信(IPC)的几种方式及比较 撰文:黄显国08 ... -
进程的管道通信
2009-11-27 18:12 3015实验四 进程的管道通信 ... -
Linux下线程的挂起和恢复
2009-11-27 15:42 3751POSIX的Linux操作系统没有提供线程挂起和恢复的例程,在 ... -
Linux 编程之生成静态连接库
2009-11-27 15:41 1410静态库及动态库的建立 ... -
LInux高级编程 - 线程(Threads)
2009-11-27 15:40 1911LInux高级编程 - 线程(Threads) ... -
Linux下c开发 之 线程通信
2009-11-27 15:39 19681.Linux“线程” 进程与 ...
相关推荐
2. **线程同步**:pthread库提供了多种同步机制,包括互斥锁(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、信号量(`pthread_semaphore_t`)和读写锁(`pthread_rwlock_t`)。这些同步原语有助于防止数据...
- 使用pthread_mutex_t进行线程同步,保护共享资源 - 使用pthread_cond_t实现线程间的条件等待和通知 5. **注意事项** - Windows与Linux的线程模型有差异,移植时需注意线程局部存储(TLS)的实现方式。 - ...
为避免这种情况,线程同步机制如锁、信号量、条件变量、事件、管程等被广泛使用。 1. **互斥锁**:互斥锁是最基本的线程同步机制,它保证了同一时间只有一个线程可以访问临界区(包含共享资源的代码段)。在Linux中...
在学习pthread库时,理解线程的生命周期、调度策略、上下文切换以及如何正确使用各种同步机制(如锁和信号量)至关重要。此外,还需注意线程安全问题,比如避免数据竞争、死锁和优先级反转等。通过深入学习pthread源...
pthread是POSIX线程库,它为C++编程...合理地使用锁(mutex)、信号量、条件变量等同步机制是至关重要的。同时,了解pthread的线程生命周期管理、线程局部存储(TLS)以及取消点等特性也是编写高效多线程代码的基础。
- **线程同步**:pthread库提供了多种同步机制,如互斥量(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、信号量(`sem_t`)等。这些在Windows下也能正常工作,但需要注意,Windows的同步原语(如Mutex、...
rwlock_t`和`pthread_rwlock_rdlock()`, `pthread_rwlock_wrlock()`, `pthread_rwlock_unlock()`)以及上述提到的信号量(`sem_t`和`sem_init()`, `sem_wait()`, `sem_post()`)等,这些同步原语用于保证线程安全,...
《Pthread多线程编程指南》是一本专为开发者准备的深入解析Pthread线程库的手册,尤其适合那些在UNIX、Linux等操作系统环境中进行多线程编程的工程师。Pthread,全称POSIX线程(Portable Operating System Interface...
【Linux系统编程——pthread线程通信(信号量)】 在多线程编程中,线程间的通信和同步是至关重要的,以确保数据的一致性和程序的正确运行。在这个主题中,我们将深入探讨一种用于线程同步的机制——信号量。信号量在...
线程同步是解决这一问题的关键技术,主要包括互斥量、信号量和条件变量。 **互斥量(Mutex)**是一种基本的线程同步机制,用于保护共享资源免受并发访问的影响。在上述例子中,如果多个线程同时访问并修改全局链表...
线程间的通信和同步是多线程编程中的核心,而pthread库为此提供了丰富的API,如线程创建、线程退出、信号量、读写锁等,这些都是实现并发程序高效运行的关键工具。 总之,这个压缩包为Windows开发者提供了一种在VS...
6. **线程同步与通信**:Pthread还提供了各种同步机制,如互斥锁(`pthread_mutex_t`)、条件变量(`pthread_cond_t`)、信号量(`sem_t`)等,用于控制线程间的执行顺序和数据共享安全。 7. **资源释放**:当线程...
Posix Pthread API 提供了多种线程同步机制,如互斥锁、条件变量、信号量等。 1. 创建互斥锁 pthread_mutex_init 函数用于创建一个互斥锁,该函数需要一个参数:互斥锁的地址。 2. 锁定互斥锁 pthread_mutex_...
在Windows下使用`pthread`库,开发者需要注意一些移植问题,比如信号量和读写锁在Windows API中实现方式不同,可能需要额外的适配工作。此外,`pthread`库在Windows上可能没有像在Linux那样的优化,性能上可能有所...
该程序使用 C 语言编写,使用 POSIX 线程库(pthread)和信号量(semaphore)来实现多线程同步。 知识点1:多线程编程 在本程序中,我们使用了 POSIX 线程库(pthread)来创建多个线程,每个线程负责模拟一个读者...
2. **线程同步**:pthread库提供了一系列的同步机制,如互斥锁(pthread_mutex_t)、条件变量(pthread_cond_t)和读写锁(pthread_rwlock_t)。互斥锁用于保护共享资源,确保同一时间只有一个线程访问;条件变量则...
**Pthread线程包在Windows平台的移植与应用** Pthread,全称为POSIX线程,是UNIX系统标准的一部分,提供了跨平台的多线程编程接口。它在Linux和其他符合POSIX标准的操作系统中广泛使用,允许开发者创建并管理多个...
本文将深入探讨pthread线程库,包括线程的创建与结束、线程绑定、线程状态、线程优先级、线程撤销、线程数据、互斥锁、条件变量、信号量和异步信号等核心概念。 1. 线程创建与结束 - `pthread_t`是线程的标识符,...
为了更好地理解如何在实际应用中使用信号量来实现多线程同步,下面通过一个具体例子来进行说明: 假设我们有一个全局变量`shared_data`,需要被多个线程共享,但是每次只能有一个线程对其进行访问。我们可以使用...