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

ps做网站首页怎么一起做网店广州站

ps做网站首页怎么,一起做网店广州站,怎么用表格做网站,在天极网做网站有效果吗1.Linux“线程”进程与线程之间是有区别的#xff0c;不过Linux内核只提供了轻量进程的支持#xff0c;未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念#xff0c;而其所谓的“线程”本质上在内核里仍然是进程。大家知道#xff0c;进程…1.Linux“线程”     进程与线程之间是有区别的不过Linux内核只提供了轻量进程的支持未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念而其所谓的“线程”本质上在内核里仍然是进程。     大家知道进程是资源分配的单位同一进程中的多个线程共享该进程的资源如作为共享内存的全局变量。Linux中所谓的“线程”只是在被创建时clone了父进程的资源因此clone出来的进程表现为“线程”这一点一定要弄清楚。因此Linux“线程”这个概念只有在打冒号的情况下才是最准确的。     目前Linux中最流行的线程机制为LinuxThreads所采用的就是线程进程“一对一”模型调度交给核心而在用户级实现一个包括信号处理在内的线程管理机制。LinuxThreads由Xavier Leroy (Xavier.Leroyinria.fr)负责开发完成并已绑定在GLIBC中发行它实现了一种BiCapitalized面向Linux的Posix 1003.1c “pthread”标准接口。Linuxthread可以支持Intel、Alpha、MIPS等平台上的多处理器系统。  按照POSIX 1003.1c 标准编写的程序与Linuxthread 库相链接即可支持Linux平台上的多线程在程序中需包含头文件pthread. h在编译链接时使用命令gcc -D -REENTRANT -lpthread xxx. c  其中-REENTRANT宏使得相关库函数(如stdio.h、errno.h中函数) 是可重入的、线程安全的(thread-safe)-lpthread则意味着链接库目录下的libpthread.a或libpthread.so文件。使用Linuxthread库需要2.0以上版本的Linux内核及相应版本的C库(libc 5.2.18、libc 5.4.12、libc 6)。     2.“线程”控制  线程创建  进程被创建时系统会为其创建一个主线程而要在进程中创建新的线程则可以调用pthread_createpthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(start_routine)(void*), void *arg);  start_routine为新线程的入口函数arg为传递给start_routine的参数。  每个线程都有自己的线程ID以便在进程内区分。线程ID在pthread_create调用时回返给创建线程的调用者一个线程也可以在创建后使用pthread_self()调用获取自己的线程IDpthread_self (void) ;  线程退出  线程的退出方式有三  1执行完成后隐式退出  2由线程本身显示调用pthread_exit 函数退出pthread_exit (void * retval) ;  3被其他线程用pthread_cance函数终止pthread_cance (pthread_t thread) ;  在某线程中调用此函数可以终止由参数thread 指定的线程。  如果一个线程要等待另一个线程的终止可以使用pthread_join函数该函数的作用是调用pthread_join的线程将被挂起直到线程ID为参数thread的线程终止pthread_join (pthread_t thread, void** threadreturn);3.线程通信  线程互斥  互斥意味着“排它”即两个线程不能同时进入被互斥保护的代码。Linux下可以通过pthread_mutex_t 定义互斥体机制完成多线程的互斥操作该机制的作用是对某个需要互斥的部分在进入时先得到互斥体如果没有得到互斥体表明互斥部分被其它线程拥有此时欲获取互斥体的线程阻塞直到拥有该互斥体的线程完成互斥部分的操作为止。  下面的代码实现了对共享全局变量x 用互斥体mutex 进行保护的目的int x; // 进程中的全局变量pthread_mutex_t mutex;pthread_mutex_init(mutex, NULL); //按缺省的属性初始化互斥体变量mutexpthread_mutex_lock(mutex); // 给互斥体变量加锁… //对变量x 的操作phtread_mutex_unlock(mutex); // 给互斥体变量解除锁  线程同步  同步就是线程等待某个事件的发生。只有当等待的事件发生线程才继续执行否则线程挂起并放弃处理器。当多个线程协作时相互作用的任务必须在一定的条件下同步。  Linux下的C语言编程有多种线程同步机制最典型的是条件变量(condition variable)。pthread_cond_init用来创建一个条件变量其函数原型为pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *attr);  pthread_cond_wait和pthread_cond_timedwait用来等待条件变量被设置值得注意的是这两个等待调用需要一个已经上锁的互斥体mutex这是为了防止在真正进入等待状态之前别的线程有可能设置该条件变量而产生竞争。pthread_cond_wait的函数原型为pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex);  pthread_cond_broadcast用于设置条件变量即使得事件发生这样等待该事件的线程将不再阻塞pthread_cond_broadcast (pthread_cond_t *cond) ;  pthread_cond_signal则用于解除某一个等待线程的阻塞状态pthread_cond_signal (pthread_cond_t *cond) ;  pthread_cond_destroy 则用于释放一个条件变量的资源。  在头文件semaphore.h 中定义的信号量则完成了互斥体和条件变量的封装按照多线程程序设计中访问控制机制控制对资源的同步访问提供程序设计人员更方便的调用接口。sem_init(sem_t *sem, int pshared, unsigned int val);  这个函数初始化一个信号量sem 的值为val参数pshared 是共享属性控制表明是否在进程间共享。sem_wait(sem_t *sem);  调用该函数时若sem为无状态调用线程阻塞等待信号量sem值增加(post )成为有信号状态若sem为有状态调用线程顺序执行但信号量的值减一。sem_post(sem_t *sem);  调用该函数信号量sem的值增加可以从无信号状态变为有信号状态。      4.实例  下面我们还是以名的生产者/消费者问题为例来阐述Linux线程的控制和通信。一组生产者线程与一组消费者线程通过缓冲区发生联系。生产者线程将生产的产品送入缓冲区消费者线程则从中取出产品。缓冲区有N 个是一个环形的缓冲池。#include stdio.h#include pthread.h#define BUFFER_SIZE 16 // 缓冲区数量struct prodcons{// 缓冲区相关数据结构int buffer[BUFFER_SIZE]; /* 实际数据存放的数组*/pthread_mutex_t lock; /* 互斥体lock 用于对缓冲区的互斥操作 */int readpos, writepos; /* 读写指针*/pthread_cond_t notempty; /* 缓冲区非空的条件变量 */pthread_cond_t notfull; /* 缓冲区未满的条件变量 */};/* 初始化缓冲区结构 */void init(struct prodcons *b){pthread_mutex_init(b-lock, NULL);pthread_cond_init(b-notempty, NULL);pthread_cond_init(b-notfull, NULL);b-readpos 0;b-writepos 0;}/* 将产品放入缓冲区,这里是存入一个整数*/void put(struct prodcons *b, int data){pthread_mutex_lock(b-lock);/* 等待缓冲区未满*/if ((b-writepos 1) % BUFFER_SIZE b-readpos){pthread_cond_wait(b-notfull, b-lock);}/* 写数据,并移动指针 */b-buffer[b-writepos] data;b-writepos;if (b-writepos BUFFER_SIZE)b-writepos 0;/* 设置缓冲区非空的条件变量*/pthread_cond_signal(b-notempty);pthread_mutex_unlock(b-lock);} /* 从缓冲区中取出整数*/int get(struct prodcons *b){int data;pthread_mutex_lock(b-lock);/* 等待缓冲区非空*/if (b-writepos b-readpos){pthread_cond_wait(b-notempty, b-lock);}/* 读数据,移动读指针*/data b-buffer[b-readpos];b-readpos;if (b-readpos BUFFER_SIZE)b-readpos 0;/* 设置缓冲区未满的条件变量*/pthread_cond_signal(b-notfull);pthread_mutex_unlock(b-lock);return data;}/* 测试:生产者线程将1 到10000 的整数送入缓冲区,消费者线程从缓冲区中获取整数,两者都打印信息*/#define OVER ( - 1)struct prodcons buffer;void *producer(void *data){int n;for (n 0; n 10000; n){printf(%d ---\n, n);put(buffer, n);} put(buffer, OVER);return NULL;}void *consumer(void *data){int d;while (1){d get(buffer);if (d OVER)break;printf(---%d \n, d);}return NULL;}int main(void){pthread_t th_a, th_b;void *retval;init(buffer);/* 创建生产者和消费者线程*/pthread_create(th_a, NULL, producer, 0);pthread_create(th_b, NULL, consumer, 0);/* 等待两个线程结束*/pthread_join(th_a, retval);pthread_join(th_b, retval);return 0;}  5.WIN32、VxWorks、Linux线程类比  目前为止笔者已经创作了《基于嵌入式操作系统VxWorks的多任务并发程序设计》《软件报》2006年5~12期连载、《深入浅出Win32多线程程序设计》天极网技术专题系列我们来找出这两个系列文章与本文的共通点。   看待技术问题要瞄准其本质不管是Linux、VxWorks还是WIN32其涉及到多线程的部分都是那些内容无非就是线程控制和线程通信它们的许多函数只是名称不同其实质含义是等价的下面我们来列个三大操作系统共同点详细表单事项WIN32VxWorksLinux线程创建CreateThreadtaskSpawnpthread_create线程终止执行完成后退出线程自身调用ExitThread函数即终止自己被其他线程调用函数TerminateThread函数执行完成后退出由线程本身调用exit退出被其他线程调用函数taskDelete终止执行完成后退出由线程本身调用pthread_exit 退出被其他线程调用函数pthread_cance终止获取线程IDGetCurrentThreadIdtaskIdSelfpthread_self创建互斥CreateMutexsemMCreatepthread_mutex_init获取互斥WaitForSingleObject、WaitForMultipleObjectssemTakepthread_mutex_lock释放互斥ReleaseMutexsemGivephtread_mutex_unlock创建信号量CreateSemaphoresemBCreate、semCCreatesem_init等待信号量WaitForSingleObjectsemTakesem_wait释放信号量ReleaseSemaphoresemGivesem_post   6.小结  本章讲述了Linux下多线程的控制及线程间通信编程方法给出了一个生产者/消费者的实例并将Linux的多线程与WIN32、VxWorks多线程进行了类比总结了一般规律。鉴于多线程编程已成为开发并发应用程序的主流方法学好本章的意义也便不言自明。
http://www.huolong8.cn/news/17632/

相关文章:

  • 汕头 做网站哪个网站做加盟
  • 提高网站流量的软文案例seo外包公司兴田德润官方地址
  • 湖南网站seo营销多少费用wordpress无法删除插件_因为发生了错误:
  • 内蒙网站建设赫伟创意星空科技禅城南庄网站制作
  • 光谷网站建设公司智慧团建电脑版登录入口
  • 网站建设 智宇软件家居设计
  • 使用帝国备份王搬迁织梦网站做筹款的网站需要什么资质
  • 网站被黑解决方案优质手机网站建设哪家好
  • 江苏 江苏省住房和城乡建设厅网站成都网站建设推荐
  • 欧美模板网站建设如何建立国外网站
  • 汽车做网站做竞品分析的网站
  • 网站域名解析ip查询定制产品网站有哪些
  • 国内出色的网站建设公司对做网站有什么建议
  • 泸州住房城乡建设局官方网站html5网站开发实例书籍
  • 土石方工程网站郑州模板网站建设
  • 景德镇做网站公司网页广告
  • 汕头仿站定制模板建站网站建设步骤大全
  • 微信手机网站三合一国外网站需要备案吗
  • 公司网站建设手机端跟PC端张家港企业做网站
  • 山东网站营销seo哪家好在国外做h网站怎么样
  • 青山做网站进入公众号继续阅读下一章
  • 嘉兴做营销型网站导购网站怎么建设
  • 网站空间1管理员网站
  • 网站开发前端简历网站设计 知识产权
  • 目录浏览的网站做网站文字编辑工作好不好
  • 网上银行登录优化网站软文
  • 网站设置专栏引流软件
  • 企业网站建设费怎么记账榆林网络推广
  • 哪里做网站seo石家庄市住房和城乡建设局官方网站
  • 重庆市建设考试报名网站百度做广告多少钱