程序运行时候. 中断. 异步. 还有多线程的一点小知识
来源:互联网 发布:地牢猎手哪个好玩知乎 编辑:程序博客网 时间:2024/06/08 10:03
之前在用nesc编写协议栈代码的时候,遇到一些程序运行过程中的问题。各种问题。
比如在处理某包的时候,在程序任何运行时,都可能被硬件中断打断,可能被某个Timer,fired打断。而程序访问了很多的全局变量。。由于我对tinyos操作系统的一些同步异步机制不太了解,开始协议栈程序运行时,有时候出现一些莫名其妙的错误,当然后来仔细看了tinyOS操作系统的一些同步异步机制后,解决了一些问题。。
反正就是,应用程序在运行过程中,不像只是学和思考C语言编程那么简单。要考虑一些运行时的问题。。。。然后联想起以前学的UNIX高级编程和UNIX网络编程这两门课时候,学过一些线程同步那些章节,然后回顾了一下以前学的一些知识,简单小结一下。
为什么应用程序使用多线程;多线程的好处等,这里就不说了,没开发过这方面的大项目,不太清楚。只是知道书上说了那些描述性的好处。
简单总结一下。
多个线程会共享一些进程的静态数据段的资源,比如在主线程中定义的全局变量。肯定其他线程也能访问的。
在Unix, Linux平台下,我们利用互斥锁来处理全局变量的互斥问题。
考查互斥锁变量,利用互斥锁变量专门关联一个变量。
数据类型: pthread_mutex_t
初始化: pthread_mutex_t macPIB_mutex = PTHREAD_MUTEX_INITIALIZER;
操作函数::
int pthread_mutex_lock(pthread_mutex_t *mutex) //加锁函数,如果mutex被锁住了,此函数会阻塞程序,直到那个锁被释放。
int pthread_mutex_unlock(pthread_mutex_t *mutex) //解锁函数
互斥锁变量适合于防止同时访问某个共享变量,但是我们需要在等待某个条件发生期间让我们进入睡眠,而不是一直的轮询的查询。可以使用 条件变量的数据类型。
考查条件变量
数据类型: pthread_cond_t
初始化:pthread_cond_t count_cond = PTHREAD_COND_INITIALIZER;
操作函数:
int pthread_cond_wait (pthread_cond_t *condptr, pthread_mutex_t *mutexptr)
int pthread_cond_signal (pthread_cond_t *condptr)
注意,我们使一个全局变量,同时关联上一个互斥锁和一个条件变量。
然后如果在调用pthread_cont_wait的时候,已经被锁住了,则睡眠,同时释放mutexptr锁。
具体解释见UNIX网络编程的604-606页。
以上是关于多个线程对共享变量访问的互斥等问题。
我们在创建线程时,主线程需要给线程函数传递参数,注意,那个参数一定要注意,不能传指针。可以传值(C语言函数调用拷贝参数,支持);或者在传之前,动态分配一个内存。具体的例子见UNIX网络编程的588-589页。以及以前课程的PPT。
程序运行的过程,应该还有很多需要学习的相关编程问题。多线程也应该是比较复杂的,很多用处的问题。今天先了解到这里。
- 程序运行时候.中断.异步.还有多线程的一点小知识
- 程序运行时候. 中断. 异步. 还有多线程的一点小知识
- 我对中断处理程序是异步运行的理解
- JAVA多线程的一点知识
- Ps的一些小知识,还有快捷键
- DirectX的一点小知识
- ios的一点小知识
- 线程的一点小知识
- ffmpeg的一点小知识
- 数据库的一点小知识
- tomcat部署时候的一点小问题
- 由小程序来看多线程的运行问题
- UNICODE、DBCS的一点小知识
- Linux中scp的一点小知识
- UNICODE、DBCS的一点小知识
- 关于隧道的一点小知识
- UNICODE、DBCS的一点小知识
- c编译的一点小知识
- Java递归算法
- iOS Application Programming Guide 摘要
- Boost学习系列6 - 多线程
- 【转】鼠标右键多余菜单清理
- Android适配器更新异常
- 程序运行时候. 中断. 异步. 还有多线程的一点小知识
- android 添加图片时错误:android libpng error: Not a PNG file
- 设计模式学习笔记之Flyweight模式(享元模式)
- windows下markdown安装与应用
- tju 3219& hdu2295(Dancing Links重复覆盖模板题)
- 天晴朗
- 英语 单词 短语 笔记
- 哼哼哈嘿-关于ListBox和DropDownList
- Python抓取糗事百科邀请码