- 浏览: 460898 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/types.h> #include <unistd.h> #include <pthread.h> #define MAX 100000000 static pthread_mutex_t iLock = PTHREAD_MUTEX_INITIALIZER; long count = 0; void myThreadA(void) { long i, j; pthread_mutex_lock(&iLock); for (i=0; i<MAX; ++i) { j = count; ++j; count = j; } printf("A The count is %ld\n", count); pthread_mutex_unlock(&iLock); } void myThreadB(void) { long i, j ; pthread_mutex_lock(&iLock); for (i=0; i<MAX; ++i) { j = count; ++j; count = j; } printf("B The count is %ld\n", count); pthread_mutex_unlock(&iLock); } int main(int argc, char *argv[]) { pthread_t tidA, tidB; int i,ret; ret = pthread_create(&tidA, NULL, (void *)myThreadA, NULL); if (0 != ret) { puts("Create A pthread error"); exit(1); } ret = pthread_create(&tidB, NULL, (void *)myThreadB, NULL); if (0 != ret) { puts("Create B pthread error"); exit(1); } puts("This is the main process.\n"); pthread_join(tidA, NULL); pthread_join(tidB, NULL); printf("The final count is %ld\n", count); return 0; }
gcc -lpthread pmlock.c
发表评论
-
execl
2010-10-28 11:13 845#include <stdio.h> ... -
dup2-close-fd
2010-10-28 10:54 816int main(int argc, char *argv ... -
Chapter 16__套接字
2010-10-25 11:39 588AF_INET、TCP、UDP、SCTP 报文界限 soc ... -
Chapter 14__高级IO
2010-10-20 11:45 718struct flock { short ... -
Chapter 15__进程间通信
2010-10-19 15:15 669- - 纯属抄书。。。 IPC(InterProcess ... -
APUE一栏入口
2010-10-14 15:25 756《UNIX环境高级编程》 《Advanced Programm ... -
Chapter 3__文件IO
2010-10-14 14:51 24int fcntl(int filedes, int cm ... -
Chapter 14
2010-10-14 09:01 7101、永远阻塞的调用有哪些? 阻塞,直到函数调用完成为止, ... -
Chapter 5__标准IO库
2010-10-12 11:56 6041)缓冲的本质是减少read和write调用的次数,也就是物 ... -
Chapter 4__文件和目录
2010-10-09 17:34 701一些概念: 主、次设备号 主设备号标识设备驱动程序 次设备号 ... -
Chapter 3__文件IO
2010-10-08 15:47 658无聊,贴些本章的关键字: 一、空洞文件、预读技术(read ... -
Chapter 1__ls DIR And struct dirent
2010-10-08 10:25 58遍历目录 #include "aupe.h& ... -
stdarg.h 可变长参数
2010-09-30 12:13 759http://zh.wikipedia.org/zh-sg/S ... -
Practice Shell解释器
2010-09-29 15:34 951http://linux.chinaunix.net/bbs/ ... -
Chapter 13__守护进程Daemon
2010-09-29 14:43 626为什么守护进程会从进程中成为一类,相对普通进程有什么区别? ... -
Chapter 12__线程控制
2010-09-29 09:53 625★12.2线程限制,sysconf函数,增强可移植性; ★ ... -
Chapter 11__线程
2010-09-28 09:35 681★线程的执行环境 线程ID、栈 一组寄存器值 调度优先级和策 ... -
Chapter 10__信号
2010-09-27 14:06 742SIGHUP解说,有关终端和 ... -
Chapter 9__进程关系
2010-09-27 12:06 752------------------------------ ... -
Chapter 8__进程控制
2010-09-19 13:58 721//一些函数: pid_t getpid(void); ...
相关推荐
通过`pthread_mutex_lock()`和`pthread_mutex_unlock()`函数,我们可以锁定和解锁互斥锁。 2. **条件变量(pthread_cond_wait, pthread_cond_signal)** 条件变量是另一种重要的线程同步工具,允许线程在满足特定...
4. `test_mutex.cpp`:测试程序,展示了如何在实际应用中使用Mutex类。 使用这个封装库时,开发者可以按照以下步骤进行: 1. 包含`mutex.h`头文件,引入Mutex类。 2. 创建Mutex对象,并初始化它。 3. 在需要保护的...
pthread_mutex_lock(&count;_mutex); value=count; printf("%d:%d\n",pthread_self(),value+1); count=value+1; pthread_mutex_unlock(&count;_mutex); } return (NULL); } int main(int argc,char ** argv) { ...
关键函数有`pthread_mutex_init()`初始化互斥锁,`pthread_mutex_lock()`获取锁,`pthread_mutex_unlock()`释放锁。 3. `pthread_attr.c`:此文件涉及到线程属性的设置和使用,如栈大小、调度策略等。`pthread_attr...
在 pthread1 函数中,我们使用 while 循环不断地卖出票,并使用 pthread_mutex_lock 函数锁定 mutex 对象,以防止多个线程同时访问共享资源 tickets。同时,我们使用 rand() 函数生成随机数,决定是否卖出票。在 ...
`pthread_mutex_lock()`和`pthread_mutex_unlock()`分别用于获取和释放锁。 3. **线程通信**:线程间的通信通常通过信号量(semaphore)或条件变量(condition variable)实现。信号量可以控制对共享资源的访问数量...
- 加锁: `pthread_mutex_lock(pthread_mutex_t *mutex);` - 解锁: `pthread_mutex_unlock(pthread_mutex_t *mutex);` - **条件变量**: - 创建: `pthread_cond_init(pthread_cond_t *cond, const pthread_...
加锁pthread_mutex_lock;解锁 pthread_mutex_unlock。 * 条件锁:创建 pthread_cond_init ;销毁 pthread_cond_destroy;触发pthread_cond_signal;广播 pthread_cond_broadcast;等待pthread_cond_wait。 * 正确...
`pthread_mutex_lock()` 和 `pthread_mutex_unlock()` 分别用于获取和释放锁。 - **条件变量(Condition Variables)**:`pthread_cond_t` 允许线程等待特定条件满足。`pthread_cond_wait()` 会阻塞线程,直到其他...
循环缓冲区(Circular Buffer)是一种在内存中实现的数据结构,常用于多线程环境下的数据共享,特别是当...例如,`Test_CirBuf`这个示例可能就是一个包含具体实现循环缓冲区和线程交替执行的代码,供开发者参考学习。
5. **test5.1 pthread create** 和 **test5.4 pthread mutexLock**、**test5.5 pthread cond_mutex**:这些与多线程编程有关。`pthread_create`用于创建新的线程,`pthread_mutex_lock`和`pthread_cond_mutex`则涉及...
int pthread_mutex_lock(pthread_mutex_t *mutex); ``` - 参数: - `mutex`:指向待锁定的互斥量。 - 返回值: - 成功:返回0。 - 失败:返回错误代码。 3. **pthread_mutex_unlock**:解锁互斥量。 ```c ...
例如,`pthread_mutex_lock()`和`pthread_mutex_unlock()`用于锁定和解锁互斥锁。 5. **线程通信**:线程间可以通过条件变量、信号量或共享内存进行通信。条件变量常与互斥锁配合,允许线程等待某个特定条件满足后...
例如,可以使用`pthread_create()`创建线程,`pthread_join()`等待线程结束,`pthread_mutex_lock()`和`pthread_mutex_unlock()`处理线程同步等。 在编译过程中可能会遇到一些问题,比如配置不正确导致的链接错误,...
pthread_mutex_lock(&mutex); while (in - out == 0) pthread_cond_wait(&empty, &mutex); printf("Consumed: %d\n", buffer[out++]); pthread_cond_signal(&full); pthread_mutex_unlock(&mutex); } } ```...
mutex_lock(&probe_hdl_lock); vfe_print("probe_work_handle start!\n"); vfe_dbg(0,"v4l2_device_register\n"); #ifdef USE_SPECIFIC_CCI vfe_clk_open(dev); #endif /* v4l2 device register */ ret = v4l2...
mutex_lock(&probe_hdl_lock); vfe_print("probe_work_handle start!\n"); vfe_dbg(0,"v4l2_device_register\n"); #ifdef USE_SPECIFIC_CCI vfe_clk_open(dev); #endif /* v4l2 device register */ ret = v4l2...
pthread_mutex_lock(mutex); //used for cammand and status debug if (old_vi_cmd != cap->cmd){ hv_dbg("capture frame command %d --> %d\n",old_vi_cmd,cap->cmd); old_vi_cmd = (int)cap->cmd; } if...
实验旨在让学生深入理解进程同步的概念,掌握Linux系统和pthread库提供的同步机制,特别是互斥锁(mutex lock)的使用,并能运用互斥锁解决实际的同步问题。同时,要求学生了解互斥锁在C语言中通过内联汇编的实现。 ...