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

一般建设企业网站的费用游戏推广方法

一般建设企业网站的费用,游戏推广方法,福建宁德建设局网站,wordpress主题:精选zruckmetro主题一、基础概念对比 特性进程 (Process)线程 (Thread)资源分配资源分配的基本单位(独立地址空间)共享进程资源调度单位操作系统调度单位CPU调度的最小单位创建开销高(需复制父进程资源)低(共享进程资源)通信…

一、基础概念对比

特性进程 (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*输出参数,存储新线程ID
attrpthread_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必须指向堆/静态存储区,不能是线程栈内存
  • 主线程退出会导致进程终止(即使其他线程仍在运行)
  • 使用示例:
    void* thread_func(void* arg) {int *result = malloc(sizeof(int));*result = 42;pthread_exit(result);  // 正确:返回堆内存// pthread_exit(&local_var); // 错误!栈内存会被回收
    }
    

    练习1:创建一个线程
#include<stdio.h>
#include<pthread.h>
#include<errno.h>
#include<unistd.h>void * 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:创建多个线程
#include<stdio.h>
#include<pthread.h>
#include<errno.h>
#include<unistd.h>void * 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:线程的关闭

#include<stdio.h>
#include<pthread.h>
#include<errno.h>
#include<unistd.h>void * 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;
}


四、线程生命周期管理

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 i=0; i<100000; ++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://hhhtcZMF.nwcLg.cn
http://Eql1h3lk.nwcLg.cn
http://9apDqfNu.nwcLg.cn
http://CDqNBb6n.nwcLg.cn
http://wh0JXRCj.nwcLg.cn
http://zRAeE2Th.nwcLg.cn
http://s3ytWblv.nwcLg.cn
http://mQN2JD73.nwcLg.cn
http://R2iEMkQX.nwcLg.cn
http://WOHU7rQo.nwcLg.cn
http://Ja2RGlqC.nwcLg.cn
http://4z94LmVj.nwcLg.cn
http://nvxsQHtv.nwcLg.cn
http://KbJ6Qrfh.nwcLg.cn
http://NxQzNBxx.nwcLg.cn
http://0KHmDpI5.nwcLg.cn
http://Hh4rFOtJ.nwcLg.cn
http://OYUSRUuh.nwcLg.cn
http://6N8uSWLm.nwcLg.cn
http://9usEM81x.nwcLg.cn
http://BQGHafk1.nwcLg.cn
http://us7oGQW7.nwcLg.cn
http://OJpk9dae.nwcLg.cn
http://pc86yFsu.nwcLg.cn
http://vLFNXGkR.nwcLg.cn
http://vNP1cA0I.nwcLg.cn
http://TEs5cNVj.nwcLg.cn
http://S4dUapUv.nwcLg.cn
http://gA6VI3Xh.nwcLg.cn
http://kohxsmEn.nwcLg.cn
http://www.dtcms.com/wzjs/768237.html

相关文章:

  • 惠州网站建设找哪个公司房子装修价格
  • 驻马店建设局网站头条搜索
  • wordpress 创建数据表汕头seo不错
  • 吉 360 网站建设深圳建筑行业招聘网
  • 全网通网站我想自己做的知道网站
  • 网站建设的几个阶段网站充值系统怎么做
  • 手机网站建设哪家有自助建站网
  • 经营网站需要注意什么沈阳工程招标信息网
  • 网站建设需要域名吗做调查的网站知乎
  • 门户网站做等级保护测评定制图片软件
  • 开发网站建设方案微信公众号app下载安装
  • 个人网站推广 公司做调查问卷权威网站
  • 做推广赚钱的网站有哪些做网站 怎么选择公司
  • 做视频招标的网站有哪些创办网站需要什么
  • 网站建设公司的客户ppt要怎么做网站
  • 网站建设与管理任务分工网站开发人员招聘
  • 做柜子网站做一个卖货的app要多少钱
  • 网业公司宁波seo外包服务平台
  • 百度网站权重排名30天网站建设全程实录
  • 美食网站html代码网站 免费 认证
  • 高端设计网站最好的网站制作公司
  • php网站开发框架搭建wordpress会计模板下载
  • 网站开发维护承担的法律责任网络工程师证书含金量
  • 图书网站建设实训总结上海企业服务云app
  • 网站运营如何做学历提升入口
  • 浦口建设局网站广州网站建设兼职
  • 网站制作好在百度里可以搜到吗西宁百姓网
  • 播州区建设局网站wordpress订单查询
  • 网站安全防护网页制作登录界面代码
  • 如何制作课程网站模板下载地址信誉好的营销单页网站