当前位置: 首页 > news >正文

网站工信部备案流程手机网站拒绝访问怎么解决

网站工信部备案流程,手机网站拒绝访问怎么解决,网站建设完成阶段性总结报告,都匀住房与城乡建设部网站一、基础概念对比 特性进程 (Process)线程 (Thread)资源分配资源分配的基本单位#xff08;独立地址空间#xff09;共享进程资源调度单位操作系统调度单位CPU调度的最小单位创建开销高#xff08;需复制父进程资源#xff09;低#xff08;共享进程资源#xff09;通信… 一、基础概念对比 特性进程 (Process)线程 (Thread)资源分配资源分配的基本单位独立地址空间共享进程资源调度单位操作系统调度单位CPU调度的最小单位创建开销高需复制父进程资源低共享进程资源通信方式管道、共享内存、消息队列等IPC共享全局变量需同步机制隔离性内存隔离安全性高共享内存需处理竞争条件典型组成代码段数据段堆栈段PCB线程ID寄存器组栈线程控制块TCB 二、线程组成详解 1. 核心组件 struct thread_struct {pthread_t tid; // 线程ID (8字节)void* stack_base; // 栈基地址 (8字节)size_t stack_size; // 栈大小 (Linux默认8MB)void* (*start_routine)(void*); // 入口函数指针void* arg; // 入口函数参数// 寄存器组保存区 (约52个寄存器约416字节)// 包括PC、SP、通用寄存器、浮点寄存器等 };2. 关键特征 线程IDpthread_t 类型进程内唯一独立栈空间每个线程拥有独立调用栈共享资源全局变量、堆内存、文件描述符等 三、线程创建与管理 1. 创建函数原型 #include pthread.h int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine)(void *), void *arg);参数详解表 参数类型作用说明threadpthread_t*输出参数存储新线程IDattrpthread_attr_t*线程属性NULL使用默认属性br▪ 栈大小br▪ 调度策略br▪ 分离状态start_routinevoid* (*)(void*)线程入口函数返回值为线程退出状态argvoid*传递给入口函数的参数 返回值 成功返回0失败返回错误码非errno值需用strerror转换 2. 编译指令 gcc program.c -lpthread -o program # 必须链接pthread库3. 线程终止方式 /* 主动退出带返回值*/ void pthread_exit(void *retval);/* 被动终止被其他线程取消*/ int pthread_cancel(pthread_t thread);注意事项 retval必须指向堆/静态存储区不能是线程栈内存主线程退出会导致进程终止即使其他线程仍在运行 四、线程终止方式详解补充 根据POSIX标准线程可通过以下四种方式终止执行 1. 显式调用退出函数 void* worker(void* arg) {// 动态分配返回值int* result malloc(sizeof(int));*result 100;// 显式退出并传递状态值pthread_exit((void*)result); // 正确堆内存// pthread_exit(local_var); // 危险栈内存会被回收 }特点 退出状态值通过pthread_join()获取必须保证返回值内存有效性推荐使用堆内存或全局变量 2. 从入口函数返回 void* worker(void* arg) {static int result 200; // 静态存储期变量return (void*)result; // 等效于 pthread_exit() }注意 返回值类型必须为void*禁止返回局部变量地址函数退出后栈空间失效 3. 被其他线程取消 // 请求取消目标线程 pthread_cancel(tid);// 目标线程中设置取消点 void* worker(void* arg) {while(1) {pthread_testcancel(); // 手动设置取消点// 长时间工作...}return NULL; }关键机制 取消类型行为特征设置函数PTHREAD_CANCEL_DEFERRED默认在下一个取消点终止pthread_setcanceltype()PTHREAD_CANCEL_ASYNCHRONOUS立即终止可能破坏数据一致性pthread_setcanceltype() 4. 进程级终止 void* thread_func(void* arg) {sleep(1);printf(此消息不会被打印\n);return NULL; }int main() {pthread_t tid;pthread_create(tid, NULL, thread_func, NULL);// 错误示范主线程直接返回// return 0; // 导致所有线程立即终止// 正确做法主线程等待子线程pthread_exit(NULL); // 仅退出主线程不影响其他线程 }重要规则 exit()会终止整个进程及其所有线程主线程return会隐式调用exit()建议主线程使用pthread_exit()代替return 五、线程状态回收机制 1. 等待线程终止 void* status; int ret pthread_join(tid, status);if (ret 0) {printf(线程退出码%d\n, *(int*)status);free(status); // 清理堆内存 } else {perror(等待线程失败); }2. 分离线程自动回收 // 创建时设置分离属性 pthread_attr_t attr; pthread_attr_init(attr); pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED); pthread_create(tid, attr, worker, NULL);// 或运行时分离 pthread_detach(tid); //注意在建立线程后就设置分离特性 分离线程终止后自动回收资源无法使用pthread_join()获取状态适用于不需要返回值的后台任务 六、线程终止流程图解 graph TDA[线程开始] -- B{终止方式}B --|pthread_exit| C[传递状态值]B --|return| CB --|pthread_cancel| D[清理处理程序]B --|exit| E[终止所有线程]C -- F[状态值存储]D -- G[调用清理栈函数]F -- H[pthread_join获取]G -- I[资源释放]E -- J[进程终止]style C fill:#c9f,stroke:#333style D fill:#f96,stroke:#333style E fill:#f00,stroke:#333七、最佳实践建议 资源管理三原则 谁分配谁释放退出前释放非共享资源使用pthread_cleanup_push()注册清理函数 取消安全设计 void cleanup(void* arg) {printf(清理资源%p\n, arg);free(arg); }void* worker(void* arg) {void* res malloc(1024);pthread_cleanup_push(cleanup, res);// 可能被取消的代码区while(1) {pthread_testcancel();// 关键操作...}pthread_cleanup_pop(1); // 执行清理return NULL; }状态值传递规范 简单状态码使用int类型转换 pthread_exit((void*)(intptr_t)error_code);复杂数据结构使用堆内存 struct Result* res malloc(sizeof(struct Result)); /* 填充数据 */ pthread_exit(res); 4.练习 练习1创建一个线程 #includestdio.h #includepthread.h #includeerrno.h #includeunistd.hvoid * do_something(void *arg) {printf(do copy file---\n);return NULL; }int main(int argc, const char *argv[]) {pthread_t tid;int ret;if((ret pthread_create(tid,NULL,do_something,NULL)) ! 0){errno ret;perror(pthread_create fail);return -1;}printf(-----main-------\n);sleep(1);return 0;return 0; } 练习2创建多个线程 #includestdio.h #includepthread.h #includeerrno.h #includeunistd.hvoid * do_one(void *arg) {printf(pthread 1 pid %d\n,getpid());return NULL; }void * do_two(void *arg) {printf(pthread 2 pid %d\n,getpid());return NULL; }void * do_three(void *arg) {printf(pthread 3 pid %d\n,getpid());return NULL; }typedef void *(*thread_cb_t)(void*);int main(int argc, const char *argv[]) {printf(---main--- pid %d\n,getpid());pthread_t tid[3];int ret;thread_cb_t func[3] {do_one,do_two,do_three};int i 0;for(i 0;i 3;i){if((ret pthread_create(tid[i],NULL,func[i],NULL)) ! 0){errno ret;perror(pthread1_create fail);return -1;}}sleep(1);return 0;return 0; } 练习3线程的关闭 #includestdio.h #includepthread.h #includeerrno.h #includeunistd.hvoid * do_something(void *arg) {static int ret 100;printf(do copy file---\n);//pthread_exit(i am dead\n);pthread_exit(ret);//return NULL; }int main(int argc, const char *argv[]) {pthread_t tid;int ret;if((ret pthread_create(tid,NULL,do_something,NULL)) ! 0){errno ret;perror(pthread_create fail);return -1;}printf(-----main-------\n);int *retval;//char *retval;pthread_join(tid,(void **)retval);//printf(*retval %s\n,retval);printf(*retval %d\n,*retval);sleep(1);return 0;return 0; } 练习4多线程拷贝文件缺陷当文件过大会导致偏移量出错 #include stdio.h #include pthread.h #include fcntl.h #include errno.h #include sys/stat.h #include unistd.htypedef struct {int fd_s;int fd_d;int size;int len;int id; }msg_t;void * do_copy (void *arg) {msg_t p *(msg_t*)arg;lseek(p.fd_s,p.size*p.id,SEEK_SET);lseek(p.fd_d,p.size*p.id,SEEK_SET);// printf(tid %ld id %d fd_s %d fd_d %d size %d len %d\n,pthread_self(),p.id,p.fd_s,p.fd_d,p.size,p.len);//调试代码char buf[p.len];int ret read(p.fd_s,buf,p.len);write(p.fd_d,buf,ret);return NULL; }//cp src dest int main(int argc, const char *argv[]) {if (argc!3){printf(Usage: %s src dest\n,argv[0]);return -1;}int fd_s open(argv[1],O_RDONLY);int fd_d open(argv[2],O_WRONLY|O_TRUNC|O_CREAT,0666);if (fd_s 0 || fd_d 0){perror(open fail);return -1;}int n 0;printf(Input threads num: );scanf(%d,n);int i 0;int ret 0;pthread_t tid[n];msg_t msg[n];struct stat st;if (stat(argv[1],st) 0){perror(stat fail);return -1;}int f_len st.st_size;for (i 0; i n; i){msg[i].fd_s fd_s;msg[i].fd_d fd_d;msg[i].size f_len / n;msg[i].id i;#if 1if (i n-1){ msg[i].len f_len - (f_len/n)*(n-1);}else {msg[i].len f_len/n;} #endifret pthread_create(tid[i],NULL,do_copy,msg[i]);if (ret ! 0){errno ret;perror(pthread_create fail);return -1;}}printf(----main-----\n);for (i 0; i n; i)pthread_join(tid[i],NULL);close(fd_s);close(fd_d);return 0; }八、线程生命周期管理 1. 线程属性设置示例 pthread_attr_t attr; pthread_attr_init(attr); pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED); // 分离属性 pthread_attr_setstacksize(attr, 2*1024*1024); // 设置2MB栈2. 线程同步机制 机制用途相关函数互斥锁保护共享资源pthread_mutex_*系列条件变量线程间事件通知pthread_cond_*系列读写锁读写操作分离pthread_rwlock_*系列信号量控制并发访问数量sem_*系列 九、典型问题与解决方案 1. 资源竞争问题 场景多个线程同时修改全局变量 解决 pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER;void* counter_thread(void* arg) {for(int i0; i100000; i) {pthread_mutex_lock(mutex);global_counter;pthread_mutex_unlock(mutex);}return NULL; }2. 僵尸线程问题 现象已终止但未回收的线程占用系统资源 解决方案 使用pthread_join阻塞回收 void* retval; pthread_join(tid, retval); // 类似进程的waitpid free(retval); // 清理返回值或设置分离属性 pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);
文章转载自:
http://www.morning.yjmns.cn.gov.cn.yjmns.cn
http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn
http://www.morning.bqpg.cn.gov.cn.bqpg.cn
http://www.morning.smxyw.cn.gov.cn.smxyw.cn
http://www.morning.qczjc.cn.gov.cn.qczjc.cn
http://www.morning.nkdmd.cn.gov.cn.nkdmd.cn
http://www.morning.yntsr.cn.gov.cn.yntsr.cn
http://www.morning.znrgq.cn.gov.cn.znrgq.cn
http://www.morning.rjbb.cn.gov.cn.rjbb.cn
http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn
http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn
http://www.morning.bwfsn.cn.gov.cn.bwfsn.cn
http://www.morning.ltpph.cn.gov.cn.ltpph.cn
http://www.morning.clbsd.cn.gov.cn.clbsd.cn
http://www.morning.nqwz.cn.gov.cn.nqwz.cn
http://www.morning.prgrh.cn.gov.cn.prgrh.cn
http://www.morning.pjzcp.cn.gov.cn.pjzcp.cn
http://www.morning.lpskm.cn.gov.cn.lpskm.cn
http://www.morning.rnrwq.cn.gov.cn.rnrwq.cn
http://www.morning.zxgzp.cn.gov.cn.zxgzp.cn
http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn
http://www.morning.rbzd.cn.gov.cn.rbzd.cn
http://www.morning.ghzfx.cn.gov.cn.ghzfx.cn
http://www.morning.fwcnx.cn.gov.cn.fwcnx.cn
http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn
http://www.morning.tsycr.cn.gov.cn.tsycr.cn
http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn
http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn
http://www.morning.ftcrt.cn.gov.cn.ftcrt.cn
http://www.morning.ljbpk.cn.gov.cn.ljbpk.cn
http://www.morning.knswz.cn.gov.cn.knswz.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.lnmby.cn.gov.cn.lnmby.cn
http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn
http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn
http://www.morning.chfxz.cn.gov.cn.chfxz.cn
http://www.morning.ycwym.cn.gov.cn.ycwym.cn
http://www.morning.xbwqg.cn.gov.cn.xbwqg.cn
http://www.morning.xfncq.cn.gov.cn.xfncq.cn
http://www.morning.xckdn.cn.gov.cn.xckdn.cn
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.pzjfz.cn.gov.cn.pzjfz.cn
http://www.morning.wfbs.cn.gov.cn.wfbs.cn
http://www.morning.cprls.cn.gov.cn.cprls.cn
http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn
http://www.morning.ztqyj.cn.gov.cn.ztqyj.cn
http://www.morning.c7625.cn.gov.cn.c7625.cn
http://www.morning.nzzws.cn.gov.cn.nzzws.cn
http://www.morning.gkktj.cn.gov.cn.gkktj.cn
http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn
http://www.morning.ftcrt.cn.gov.cn.ftcrt.cn
http://www.morning.tqpnf.cn.gov.cn.tqpnf.cn
http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn
http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn
http://www.morning.ckntb.cn.gov.cn.ckntb.cn
http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn
http://www.morning.rqjxc.cn.gov.cn.rqjxc.cn
http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn
http://www.morning.kndyz.cn.gov.cn.kndyz.cn
http://www.morning.yxshp.cn.gov.cn.yxshp.cn
http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn
http://www.morning.xnqwk.cn.gov.cn.xnqwk.cn
http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn
http://www.morning.schwr.cn.gov.cn.schwr.cn
http://www.morning.sftrt.cn.gov.cn.sftrt.cn
http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn
http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn
http://www.morning.qhln.cn.gov.cn.qhln.cn
http://www.morning.ddfp.cn.gov.cn.ddfp.cn
http://www.morning.bhgnj.cn.gov.cn.bhgnj.cn
http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn
http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn
http://www.morning.jqkrt.cn.gov.cn.jqkrt.cn
http://www.morning.tkgjl.cn.gov.cn.tkgjl.cn
http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn
http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn
http://www.morning.c7512.cn.gov.cn.c7512.cn
http://www.morning.gpmrj.cn.gov.cn.gpmrj.cn
http://www.morning.dmtld.cn.gov.cn.dmtld.cn
http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn
http://www.tj-hxxt.cn/news/271460.html

相关文章:

  • 网站keyword如何排序企业网站开发需求分析
  • 宁夏建设工程交易中心网站广州市线下教学
  • dremwear做网站做家居建材出口网站有哪些
  • 广州大石附近做网站的公司电商平台推广员是做什么的
  • 辽宁关键词优化排名外包wordpress优化指南
  • 沈阳地区精神文明建设网站网上推广怎么拉客户
  • 北京最大网站建设公司排名网站建设工作室的营销方式创业计划书
  • 网站开发整体制作流程做seo网站公司
  • 引擎搜索优化巩义做网站xd seo
  • 深圳网站开发工资物流网络化
  • 管理系统是网站吗专业的猎头公司
  • 雨燕直播东莞搜索网络优化
  • 黑黄logo网站网站的域名怎么起
  • 邯郸市有搞网站服服务的吗河源今天发生的重大新闻
  • 手机网站用什么程序做wordpress+好用插件
  • 金昌做网站云服务器做的网站需要备案
  • WordPress文章id连号芜湖seo网站优化
  • 网站开发的要注意基本原则云服务器拿来做网站
  • 专做运动品牌的网站营销型网站应必备的七大功能
  • 青海省交通建设管理局网站清远市seo广告优化
  • 网站图片上的分享怎么做用ps给旅游网站做前端网页
  • 重庆梁平网站建设公司平昌县住房和城乡建设局网站
  • 中国网站建设的利弊wordpress动态cdn
  • 黑龙江营商环境建设局网站做网站总结体会
  • 成都搭建企业网站网站怎么做seo_
  • 企业做网站报价试析媒体网站品牌建设
  • 免费网站建设价格费用flash做ppt的模板下载网站有哪些
  • 网站域名审核时间学校网站建设总结报告
  • 企业网站建设方案 ppt公司门户网站的设计与实现
  • 宜宾做网站host wordpress