医院网站建设工作汇报成立公司法人有啥要求

张小明 2026/3/2 19:54:49
医院网站建设工作汇报,成立公司法人有啥要求,网站做目录中,济南腾飞网络科技有限公司线程控制 - 互斥与同步一、 互斥#xff08;Mutex#xff09;1.概念在多线程中对临界资源的排他性访问。临界资源#xff1a;在多线程中会被多个线程进行读写操作的资源#xff08;全局变量、文件、设备等#xff09;排他访问#xff1a;同一时刻只能有一个线程进行读写操…线程控制 - 互斥与同步一、 互斥Mutex1.概念在多线程中对临界资源的排他性访问。临界资源在多线程中会被多个线程进行读写操作的资源全局变量、文件、设备等排他访问同一时刻只能有一个线程进行读写操作2.用途在多线程中一个资源同一时刻只能有一个线程访问。示例问题int A 0; // 临界资源 // 线程1 void* th1(void* arg) { A; // 这不是原子操作 } // 线程2 void* th2(void* arg) { A; }A在汇编中至少需要3步读取A到寄存器寄存器值加1将结果写回A如果th1执行了1、2步后切换到th2就会发生数据一致性问题。解决方案使用互斥锁使用步骤定义互斥锁初始化锁加锁解锁销毁相关函数1. 定义互斥锁pthread_mutex_t mutex;2. 初始化锁int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);功能初始化互斥锁参数mutex要初始化的互斥锁attr初始化属性一般为NULL默认锁返回值成功返回0失败返回非03. 加锁int pthread_mutex_lock(pthread_mutex_t *mutex);功能给代码加锁特点加锁到解锁之间的代码属于原子操作在加锁期间其他线程不能执行该部分代码如果锁已被占用线程会阻塞等待返回值成功返回0失败返回非04. 解锁int pthread_mutex_unlock(pthread_mutex_t *mutex);功能解锁互斥锁注意加锁和解锁一般成对出现返回值成功返回0失败返回非05. 销毁int pthread_mutex_destroy(pthread_mutex_t *mutex);功能销毁互斥锁返回值成功返回0失败返回非0示例代码#include stdio.h #include stdlib.h #include string.h #include unistd.h #include pthread.h int A 0 ; pthread_mutex_t mutex; void* th(void* arg) { // pthread_mutex_lock(mutex); int i 5000; while(i--) { pthread_mutex_lock(mutex); int tmp A; printf(A is %d\n,tmp1); A tmp1; pthread_mutex_unlock(mutex); } //pthread_mutex_unlock(mutex); return NULL; } int main(int argc, char **argv) { pthread_t tid1,tid2; pthread_mutex_init(mutex,NULL); pthread_create(tid1,NULL,th,NULL); pthread_create(tid2,NULL,th,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); pthread_mutex_destroy(mutex); return 0; }2. 同步Synchronization概念按照一定先后顺序对资源的排他性访问。与互斥的关系互斥包含同步同步是互斥的一个特例互斥只关心资源是否被占用同步不仅关心资源还关心访问顺序3. 信号量Semaphore与互斥锁的区别加锁/解锁主体互斥锁加锁和解锁必须是同一个线程信号量可以由不同线程交叉释放th1释放th2th2释放th1使用场景互斥锁临界区代码要短小精悍不要有休眠或耗时操作信号量可以有适当的休眠和小耗时操作计数信号量信号量初值可以大于1用于多个资源的情况。使用步骤定义信号量初始化信号量PV操作销毁信号量相关函数1. 定义信号量sem_t sem;2. 初始化信号量int sem_init(sem_t *sem, int pshared, unsigned int value);功能初始化信号量参数sem要初始化的信号量pshared0线程间使用非0进程间使用value信号量初始值二值信号量0或10红灯线程阻塞1绿灯线程可通过返回值成功返回0失败返回-13. PV操作P操作申请资源 →sem_wait()V操作释放资源 →sem_post()sem_wait()int sem_wait(sem_t *sem);功能申请信号量资源行为如果有资源0申请资源继续执行如果没资源0线程阻塞等待注意自动执行sem sem - 1返回值成功返回0失败返回-1sem_post()int sem_post(sem_t *sem);功能释放信号量资源注意自动执行sem sem 1返回值成功返回0失败返回-14. 销毁信号量int sem_destroy(sem_t *sem);示例代码#include pthread.h #include stdio.h #include stdlib.h #include string.h #include time.h #include unistd.h #include semaphore.h sem_t sem_H,sem_W; void* th1(void* arg) { int i 10; while(i--) { sem_wait(sem_H);// sem_H -1 printf(hello ); fflush(stdout); sem_post(sem_W);// sem_W 1 } return NULL; } void* th2(void* arg) { int i 10; while(i--) { sem_wait(sem_W); printf(world\n); sleep(1); sem_post(sem_H); } return NULL; } int main(int argc, char **argv) { pthread_t tid1,tid2; sem_init(sem_H,0,1); sem_init(sem_W,0,0); pthread_create(tid1, NULL, th1,NULL); pthread_create(tid2, NULL, th2,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); sem_destroy(sem_H); sem_destroy(sem_W); return 0; }4. 死锁Deadlock概念由于锁资源安排不合理导致进程/线程无法继续执行的现象。产生死锁的四个必要条件互斥条件一个资源每次只能被一个进程使用请求与保持条件一个进程因请求资源而阻塞时对已获得的资源保持不放不剥夺条件进程已获得的资源在未使用完之前不能强行剥夺循环等待条件若干进程之间形成一种头尾相接的循环等待资源关系死锁示例pthread_mutex_t mutexA PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutexB PTHREAD_MUTEX_INITIALIZER; // 线程1 void* thread1(void* arg) { pthread_mutex_lock(mutexA); // 获取锁A sleep(1); pthread_mutex_lock(mutexB); // 尝试获取锁B → 死锁 // ... pthread_mutex_unlock(mutexB); pthread_mutex_unlock(mutexA); return NULL; } // 线程2 void* thread2(void* arg) { pthread_mutex_lock(mutexB); // 获取锁B sleep(1); pthread_mutex_lock(mutexA); // 尝试获取锁A → 死锁 // ... pthread_mutex_unlock(mutexA); pthread_mutex_unlock(mutexB); return NULL; }5. 总结对比特性互斥锁Mutex信号量Semaphore用途保护临界区确保互斥访问控制资源访问数量资源数通常保护单个资源可以保护多个相同资源加锁/解锁必须由同一线程完成可由不同线程完成阻塞锁被占用时线程阻塞资源数为0时线程阻塞计数无计数功能有计数功能性能轻量级适用于短临界区稍重适用于较复杂同步使用原则能用互斥锁就用互斥锁因为它更简单高效临界区要短小不要包含耗时操作避免死锁按固定顺序申请锁或使用超时机制锁的粒度要合适不要过大影响并发或过小增加开销
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

如何建立微信网站利用网站源代码建立网站

UNIX 编辑器使用技巧与用户类型分析 1. 在 vi 中读取标准输出 在 vi 编辑器里,有几种方法能将命令执行结果读取到当前工作会话中。 1.1 直接读取执行结果 这是实现该功能的三种可能方法中步骤最短的一种,只需一步即可完成。在命令行模式下,使用如下命令: :r! date此命…

张小明 2026/1/19 13:46:40 网站建设

vs加数据库做网站上海公司沪牌价格

计算机硬件、性能与网络问题排查及搭建指南 1. 硬件问题排查急救 当遇到硬件问题导致设备运行异常或完全无法工作时,寻找更新的驱动程序通常是最佳选择。不过,在此之前,你可以先尝试使用 Windows 内置的故障排除工具,看是否能解决问题。 1.1 使用控制面板中的故障排除小…

张小明 2026/1/19 13:46:10 网站建设

dedecms导入网站宁波网络建站

科研新人做综述时最痛苦:一搜就是几十页论文,重复、无关、没用。下面三款工具让我效率翻倍。 ① WisPaper(智能学术搜索 文献管理) 官网:https://www.wispaper.ai WisPaper 能通过关键词和语义搜索快速找到相关文献&…

张小明 2026/1/19 13:45:08 网站建设

网站开发范围说明书网站的空间怎么查

下载:https://tool.nineya.com/s/1jbp8f4mc 小白转文字这款工具作者官宣免费100年,而且不限时长,不限次数,完全免费,这跟某些大厂的软件动不动就收费来说,良心多了。 软件可以视频转文字、语音转文字、实时…

张小明 2026/1/19 13:44:37 网站建设

郴州网站优化淘客手机网站源码

还在为.NET应用中的数据展示而烦恼吗?ReoGrid这款优秀组件将彻底改变你的开发体验!无需复杂的代码逻辑,无需繁琐的配置步骤,只需简单几行代码,就能让你的应用拥有媲美Excel的专业表格功能。 【免费下载链接】ReoGrid F…

张小明 2026/1/19 13:44:06 网站建设

怎么在word上做超链接网站为什么要创建网站子目录

VGGT如何重塑三维视觉:从单图理解到多视角重建的技术演进 【免费下载链接】vggt VGGT Visual Geometry Grounded Transformer 项目地址: https://gitcode.com/gh_mirrors/vg/vggt 视觉几何基础Transformer(VGGT)正在重新定义三维场景理…

张小明 2026/1/19 13:43:35 网站建设