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

计算机本科论文 网站建设专业济南网站建设价格

计算机本科论文 网站建设,专业济南网站建设价格,黑龙江建设网官网登陆,建设银行登录网站线程号 就像每个进程都有一个进程号一样#xff0c;每个线程也有一个线程号。进程号在整个系统中是唯一的#xff0c;但线程号不同#xff0c;线程号只在它所属的进程环境中有效。 进程号用 pid_t 数据类型表示#xff0c;是一个非负整数。线程号则用 pthread_t 数据类型…线程号 就像每个进程都有一个进程号一样每个线程也有一个线程号。进程号在整个系统中是唯一的但线程号不同线程号只在它所属的进程环境中有效。 进程号用 pid_t 数据类型表示是一个非负整数。线程号则用 pthread_t 数据类型来表示Linux 使用无符号长整数表示。 有的系统在实现pthread_t 的时候用一个结构体来表示所以在可移植的操作系统实现不能把它做为整数处理。 pthread_self函数 #include pthread.hpthread_t pthread_self(void);功能获取线程号。参数无返回值调用线程的线程 ID 。 线程的创建 pthread_create函数 #include pthread.hint pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg );功能创建一个线程。参数thread线程标识符地址。attr线程属性结构体地址通常设置为 NULL。start_routine线程函数的入口地址。arg传给线程函数的参数。返回值成功0失败非 0 在一个线程中调用pthread_create()创建新的线程后当前线程从pthread_create()返回继续往下执行而新的线程所执行的代码由我们传给pthread_create的函数指针start_routine决定。 由于pthread_create的错误码不保存在errno中因此不能直接用perror()打印错误信息可以先用strerror()把错误码转换成错误信息再打印。 参考程序 // 回调函数void *thread_fun(void * arg){sleep(1);int num *((int *)arg);printf(int the new thread: num %d\n, num);​return NULL;}​int main(){pthread_t tid;int test 100;​// 返回错误号int ret pthread_create(tid, NULL, thread_fun, (void *)test);if (ret ! 0){printf(error number: %d\n, ret);// 根据错误号打印错误信息printf(error information: %s\n, strerror(ret));}​while (1);​return 0;}​​ 线程资源回收 pthread_join函数 #include pthread.h​int pthread_join(pthread_t thread, void **retval);功能等待线程结束此函数会阻塞并回收线程资源类似进程的 wait() 函数。如果线程已经结束那么该函数会立即返回。参数thread被等待的线程号。retval用来存储线程退出状态的指针的地址。返回值成功0失败非 0 参考程序 void *thead(void *arg){static int num 123; //静态变量​printf(after 2 seceonds, thread will return\n);sleep(2);​return num;}​int main(){pthread_t tid;int ret 0;void *value NULL;​// 创建线程pthread_create(tid, NULL, thead, NULL);​​// 等待线程号为 tid 的线程如果此线程结束就回收其资源// value保存线程退出的返回值pthread_join(tid, value);​printf(value %d\n, *((int *)value));​return 0;} 调用该函数的线程将挂起等待直到id为thread的线程终止。thread线程以不同的方法终止通过pthread_join得到的终止状态是不同的总结如下 如果thread线程通过return返回retval所指向的单元里存放的是thread线程函数的返回值。 如果thread线程被别的线程调用pthread_cancel异常终止掉retval所指向的单元里存放的是常数PTHREAD_CANCELED。 如果thread线程是自己调用pthread_exit终止的retval所指向的单元存放的是传给pthread_exit的参数。 线程分离 一般情况下线程终止后其终止状态一直保留到其它线程调用pthread_join获取它的状态为止。但是线程也可以被置为detach状态这样的线程一旦终止就立刻回收它占用的所有资源而不保留终止状态。 不能对一个已经处于detach状态的线程调用pthread_join这样的调用将返回EINVAL错误。也就是说如果已经对一个线程调用了pthread_detach就不能再调用pthread_join了。 pthread_detach函数 #include pthread.h​int pthread_detach(pthread_t thread);功能使调用线程与当前进程分离分离后不代表此线程不依赖与当前进程线程分离的目的是将线程资源的回收工作交由系统自动来完成也就是说当被分离的线程结束之后系统会自动回收它的资源。所以此函数不会阻塞。参数thread线程号。返回值成功0失败非0 线程退出 在进程中我们可以调用exit函数或_exit函数来结束进程在一个线程中我们可以通过以下三种在不终止整个进程的情况下停止它的控制流。 线程从执行函数中返回。 线程调用pthread_exit退出线程。 线程可以被同一进程中的其它线程取消。 pthread_exit函数 #include pthread.h​void pthread_exit(void *retval);功能退出调用线程。一个进程中的多个线程是共享该进程的数据段因此通常线程退出后所占用的资源并不会释放。参数retval存储线程退出状态的指针。返回值无   参考程序: void *thread(void *arg){static int num 123; //静态变量int i 0;while (1){printf(I am runing\n);sleep(1);i;if (i 3){pthread_exit((void *)num);// return num;}}​return NULL;}​int main(int argc, char *argv[]){int ret 0;pthread_t tid;void *value NULL;​pthread_create(tid, NULL, thread, NULL);​​pthread_join(tid, value);printf(value %d\n, *(int *)value);​return 0;} 线程取消 #include pthread.h int pthread_cancel(pthread_t thread); 功能     杀死(取消)线程 参数     thread : 目标线程ID。 返回值     成功0     失败出错编号 注意线程的取消并不是实时的而又一定的延时。需要等待线程到达某个取消点(检查点)。 类似于玩游戏存档必须到达指定的场所(存档点如客栈、仓库、城里等)才能存储进度。 杀死线程也不是立刻就能完成必须要到达取消点。 取消点是线程检查是否被取消并按请求进行动作的一个位置。通常是一些系统调用creatopenpauseclosereadwrite..... 执行命令**man 7 pthreads**可以查看具备这些取消点的系统调用列表。 可粗略认为一个系统调用(进入内核)即为一个取消点。 参考程序: void *thread_cancel(void *arg) {     while (1)     {         pthread_testcancel(); //设置取消点     }     return NULL; } int main() {     pthread_t tid;     pthread_create(tid, NULL, thread_cancel, NULL); //创建线程 sleep(3);                   //3秒后     pthread_cancel(tid); //取消tid线程 pthread_join(tid, NULL); return 0; } 线程取消 #include pthread.h int pthread_cancel(pthread_t thread); 功能     杀死(取消)线程 参数     thread : 目标线程ID。 返回值     成功0     失败出错编号 注意线程的取消并不是实时的而又一定的延时。需要等待线程到达某个取消点(检查点)。 类似于玩游戏存档必须到达指定的场所(存档点如客栈、仓库、城里等)才能存储进度。 杀死线程也不是立刻就能完成必须要到达取消点。 取消点是线程检查是否被取消并按请求进行动作的一个位置。通常是一些系统调用creatopenpauseclosereadwrite..... 执行命令**man 7 pthreads**可以查看具备这些取消点的系统调用列表。 可粗略认为一个系统调用(进入内核)即为一个取消点。 参考程序: void *thread_cancel(void *arg) {     while (1)     {         pthread_testcancel(); //设置取消点     }     return NULL; } int main() {     pthread_t tid;     pthread_create(tid, NULL, thread_cancel, NULL); //创建线程 sleep(3);                   //3秒后     pthread_cancel(tid); //取消tid线程 pthread_join(tid, NULL); return 0; }
http://www.hkea.cn/news/14385718/

相关文章:

  • 域名备案用的网站建设方案江苏建设服务信息网站
  • 营销网站建设的公司有哪些创业网站开发
  • 哈密北京网站建设东莞网页建设网站
  • 律师推广网站排名uc浏览器手机网页版
  • 高端网站建设 骆产品信息发布网站
  • 中国建设银行官方网站下载购物网站优惠券怎么做
  • 网站设计公司列表wordpress 搭建教育
  • 关于字体设计的网站宝塔面板加wordpress建站
  • 做熊猫tv网站的目的wordpress如何导入模板数据
  • 网站正常打开速度慢仿糗事百科网站源码dede二次开发分享+评论+互动
  • 网站设计旅行社新闻内容中国营销
  • 先做网站后备案吗网站开发最新流程
  • 网站菜单样式怎么根据已有网站做新网站
  • 广告图片网站源码产品软文范例大全
  • 网站开发与维护岗位说明书天津seo培训班在哪里
  • 手机免费建网站软件怎么查询网站备案服务商是哪个
  • 微网站模板制作建材做哪些网站
  • 网站怎么做支付宝接口石家庄网站建设平台
  • 九曲网站建设东莞有什么好玩的地方
  • 中国建设银行信用卡中心网站邮件服务商
  • 万网域名绑定到其它网站建网站一般要多少钱
  • 济南网站制作专业如何用手机制作网页链接
  • 网站开发需多少钱小说网站怎么做防采集
  • 编程学习入门网站wordpress apache伪静态
  • 即墨城乡建设局网站网站空间可以自己买吗
  • 网站开发如何入账分销平台软件
  • 建设论坛网站大概多少钱南宁网站建设方案报价
  • 如何查询网站备案信息查询h5动态页面
  • qq刷赞网站咋做塘沽建设网站公司
  • 摄影师网站模板安徽鑫华建设有限公司网站