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

网站设计思路文案范文专业手机网站建设多少钱

网站设计思路文案范文,专业手机网站建设多少钱,如何将wordpress上传,专业做网站安全的sine安一、pthread_self函数 功能#xff1a;获取线程ID。 pthread_t pthread_self(void); 线程ID#xff1a;pthread_t类型#xff0c;本质#xff1a;在Linux为无符号整数(%lu)#xff0c;其他系统可能是结构体实现线程ID是进程内部识别标志。#xff08;两个进程间#…一、pthread_self函数 功能获取线程ID。 pthread_t pthread_self(void); 线程IDpthread_t类型本质在Linux为无符号整数(%lu)其他系统可能是结构体实现线程ID是进程内部识别标志。两个进程间线程ID允许相同 注意不应使用全局变量pthread_t tid在子线程通过pthread_create传出参数来获取线程ID而应使用pthread_self. 二、pthread_create函数 功能创建一个新线程 int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);typedef void *(*start_routine) (void *); int pthread_create(pthread_t *thread, const pthread_attr_t *attr, start_routine th_fn, void *arg); 参数 pthread_t当前Linux可理解为typedef unsigned long int pthread_t参数1传出参数保存系统为我们分配好的线程ID参数2通常传NULL表示使用线程默认属性。若想使用具体属性也可以修改该参数。参数3函数指针指向线程主函数(线程体)该函数运行结束则线程结束。参数4线程执行期间所使用的参数。1. 测试代码 #includestdio.h #includepthread.h #includeunistd.h #includestdlib.hvoid *thrd_func(void *arg) {printf(In threadthread id %lu, pid %u\n, pthread_self(), getpid());return NULL; }int main(void) {pthread_t tid;int ret; printf(In main 1: thread id %lu, pid %u\n, pthread_self(), getpid());ret pthread_create(tid, NULL, thrd_func, NULL);if(ret ! 0) {fprintf(stderr, pthread_create error: %s\n, sterror(ret));exit(1);}sleep(1); printf(In main 2: thread id %lu, pid %u\n, pthread_self(), getpid()); return 0; }输出结果 2. 测试代码 #includestdio.h #includepthread.h #includeunistd.h #includestdlib.h #includestring.hvoid *thrd_func(void *arg) {int i (int) arg;sleep(i);printf(%dth thread: id %lu, pid %u\n, i1, pthread_self(), getpid());return NULL; }int main(void) {pthread_t tid;int ret, i; for(i 0; i 5; i) {ret pthread_create(tid, NULL, thrd_func, (void *)i);if(ret ! 0) {fprintf(stderr, pthread_create%s\n, strerror(ret));exit(1);}}sleep(i);return 0; //将当前进程退出 } 输出结果 三、线程与共享 注意线程间共享全局变量 【牢记】线程默认共享数据段、代码段等地址空间常用的是全局变量而进程间不共享变量只能借助mmap。 线程共享资源 文件描述符每种信号的处理方式当前工作目录用户ID和组ID内存地址空间.text/ .data/ .bss/heap/共享库 线程非共享资源 线程ID处理器现场和栈指针(内核栈errno变量信号屏蔽字 测试代码 #includestdio.h #includepthread.h #includestdlib.h #includeunistd.hint var 100;void *tfn(void *arg) {var 200;printf(thred\n);return NULL; }int main(void) {printf(At first var %d\n, var);pthread_t tid;pthread_create(tid, NULL, tfn, NULL);sleep(1);printf(after pthread_create, var %d\n, var);return 0;} 输出结果 四、pthread_exit函数 功能将单个线程退出 void pthread_exit(void *retval) 参数retval表示线程退出状态通常NULL1. 测试代码 #include pthread.h #include stdio.h #include unistd.h #include stdlib.hint func(int a) {pthread_exit(NULL); }void *tfn(void *arg) {int i;i (int)arg;sleep(i);if(i 2)func(888);printf(Iam %dth thread, Thread_ID %lu\n, i1, pthread_self());pthread_exit(NULL); }int main() {int n 5, i;pthread_t tid;for(i 0; i n; i) {pthread_create(tid, NULL, tfn, (void*)i);}sleep(i);printf(I am main and I am not a process, Iam a thread!\nmain_thread_ID %lu\n, pthread_self());return 0; } 输出结果 2. 测试代码 #include pthread.h #include stdio.h #include unistd.h #include stdlib.hint func(int a) {return 0; }void *tfn(void *arg) {int i;i (int)arg;sleep(i);if(i 2)func(888);printf(Iam %dth thread, Thread_ID %lu\n, i1, pthread_self());pthread_exit(NULL); }int main() {int n 5, i;pthread_t tid;for(i 0; i n; i) {pthread_create(tid, NULL, tfn, (void*)i);}sleep(i);printf(I am main and I am not a process, Iam a thread!\nmain_thread_ID %lu\n, pthread_self());return 0; } 输出结果 五、pthread_join函数 int pthread_join(pthread_t thread, void **retval);返回值若成功返回0否则返回错误编号 参数 thread线程ID(【注意】不是指针)retval存储线程结束状态 注意 调用该函数的线程将挂起等待直到id为thread的线程终止状态。thread线程以不同的方法终止通过pthread_join得到的终止状态是不同的总结如下 如果thread线程通过return返回retval所指向的单元存放的是thread线程函数的返回值。若果thread线程被别的线程调用pthread_cancel异常终止掉retval指向单元里存放的是常数PTHREAD_CANCELED。1. 测试代码 #includepthread.h #includestdlib.htypedef struct {int a;int b; } exit_t; void *tfn(void *arg) {exit_t *ret;ret (exit*)malloc(sizeof(exit_t));ret-a 100;ret-b 300;pthred_exit((void *) ret); } int main() {pthread_t tid;exit_t *retval;pthread_create(tid, NULL, tfn, NULL);pthread_join(tid, (void**)retval); /*调用pthread_join可以获取线程的退出转态*/ printf(a %d, b %d\n, retval-a, retval-b);return 0;} 输出结果 2. 测试代码 #includestdio.h #includestring.h #includepthread.h #includestdlib.h #includeunistd.h #includestring.htypedef struct {int ch;int var;char str[64]; }exit_t;void *thrd_func(void *arg) {exit_t *retval (exit_t *)arg;retval-ch m;retval-var 200;strcpy(retval-str, my thread\n);pthread_exit((void*) retval); } int main() {pthread_t tid;int ret;exit_t *retval (exit_t *)malloc(sizeof(exit_t));printf(In main 1: thread id %lu, pid %u\n, pthread_self(), getpid());ret pthread_create(tid, NULL, thrd_func, (void*)retval);if(ret ! 0) {fprintf(stderr, pthread_create error: %s\n, strerror(ret));exit(1);}pthread_join(tid, (void**)retval);printf(ch %c, var %d, str %s\n, retval-ch, retval-var, retval-str);free(retval);pthread_exit((void *)1); } 输出结果 测试代码 #includestdio.h #includestring.h #includepthread.h #includestdlib.h #includestring.h #includeunistd.htypedef struct {int ch;int var;char str[64]; }exit_t;void *thrd_func(void *arg) {exit_t *retvar (exit_t *)malloc(sizeof(exit_t));retvar-ch m;retvar-var 200;strcpy(retvar-str, my thread\n);pthread_exit((void*) retvar); } int main() {pthread_t tid;int ret;exit_t *retval;printf(In main 1: thread id %lu, pid %u\n, pthread_self(), getpid());ret pthread_create(tid, NULL, thrd_func, NULL);if(ret ! 0) {fprintf(stderr, pthread_create error: %s\n, strerror(ret));exit(1);}pthread_join(tid, (void**)retval);printf(ch %c, var %d, str %s\n, retval-ch, retval-var, retval-str);free(retval);pthread_exit((void *)1); } 输出结果 3. 测试代码 #includestdio.h #includestdlib.h #includeunistd.h #includepthread.hint var 100;void *tfn(void *arg) {int i;i (int) arg;sleep(i);if(i 1) {var 333;printf(var %d\n, var);return (void*) var;} else if(i 3) {var 777;printf(Im %dth pthread, pthread_id %lu\n var %d\n, i1, pthread_self(), var);pthread_exit((void*)var); } else {printf(Im %dth pthread, pthread_id %lu\n var %d\n, i1, pthread_self(), var);pthread_exit((void*)var);}return NULL; }int main() {int i;pthread_t tid[5];int *ret[5];for(i 0; i 5; i) {pthread_create(tid[i], NULL, tfn, (void*)i);}for(i 0; i 5; i) {pthread_join(tid[i], (void**)ret[i]);printf(----------%ds ret %d\n, (int)ret[i]); }printf(Im main pthread tid %lu\t var %d\n, pthread_self(), var);sleep(i);return 0; } 输出结果
http://www.zqtcl.cn/news/214277/

相关文章:

  • 有部分网站打不开网站服务内容怎么写
  • 百度安全网站检测好看的免费的小说网站模板
  • 锡山区住房和城乡建设局网站免费ppt模板下载简约
  • 建设银行 杭州招聘网站建设工程有限公司是干什么的
  • 做网站必须购买空间吗?3点新闻发布
  • 济南集团网站建设流程东莞做网站公司首选
  • 有需要做网站推广找我网站怎么 备案
  • 怎么把网站放到服务器上站长工具seo综合查询外部链接数量
  • 做网站上市的公司开一家公司最低注册资金
  • 仙居谁认识做网站的有哪些好的网站建设
  • 互动广告机网站建设怀集网站建设
  • 好的 做网站的软件公司pinterest app下载
  • 公司网站报价邯郸软件定制
  • 产品毕业设计代做网站资料库网站源码
  • 交易类网站做支付宝功能建设银行网站收款怎么打明细
  • 广州找人做网站做网站网关备案
  • 网站的布局方式有哪些内容免费ppt模板下载公众号
  • 色91Av做爰网站获胜者网站建设
  • 企业做网站要多少钱简单网页设计模板网站
  • 住宅城乡建设部门户网站seo主管的seo优化方案
  • 商洛做网站电话北京做网站比较大的公司
  • 某俄文网站电脑做网站服务器
  • 广州网站建设开发团队江苏省建设招标网站
  • 南昌建设工程质量监督网站wordpress菜单登录
  • 网站设计贵不贵网站seo设置是什么
  • 不属于企业网站建设基本标准的是南通网站建设知识
  • 玉树州wap网站建设公司做试玩网站
  • 商城网站怎么建保定网络营销网站建设
  • 检索类的网站建设公司的网站建设规划书
  • 百度做网站需要交钱吗保定网站建设平台分析