ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++基础知识学习

2021-11-13 14:02:01  阅读:235  来源: 互联网

标签:线程 sync C++ 基础知识 学习 mutex pthread cond preview


1.C++中常量指针和 指针常量的区别:
2.内存中高位地址地位地址, 大小端

C++ #include"pthread.h"

pthread_t 创建线程

pthread_create

总述:pthread_create是(Unix、Linux、Mac OS X)等操作系统的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。
pthread_create的返回值表示成功,返回0;表示出错,返回表示-1。

pthread_create函数如何创造线程:

#include <pthread.h>
int pthread_create(
        pthread_t *restrict tidp,   //新创建的线程ID指向的内存单元。
        const pthread_attr_t *restrict attr,  //线程属性,默认为NULL
        void *(*start_rtn)(void *), //新创建的线程从start_rtn函数的地址开始运行
        void *restrict arg //默认为NULL。若上述函数需要参数,将参数放入结构中并将地址作为arg传入。
        );

eg: result = pthread_create(&preview_thread, NULL, preview_thread_func, (void *)this)

条件变量和互斥锁一样,都有静态动态两种创建方式,
静态方式使用PTHREAD_COND_INITIALIZER常量,如下:
eg:pthread_cond_t cond=PTHREAD_COND_INITIALIZER

动态方式调用pthread_cond_init()函数,API定义如下:
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr)
尽管POSIX标准中为条件变量定义了属性,但在LinuxThreads中没有实现,因此cond_attr值通常为NULL,且被忽略。
eg:

pthread_cond_init(&preview_sync, NULL);
pthread_mutex_init(&preview_mutex, NULL);

注销一个条件变量需要调用pthread_cond_destroy(),只有在没有线程在该条件变量上等待的时候才能注销这个条件变量,否则返回EBUSY。因为Linux实现的条件变量没有分配什么资源,所以注销动作只包括检查是否有等待线程。
API定义如下:
int pthread_cond_destroy(pthread_cond_t *cond)

pthread_join

pthread_detacth

pthread_mutex_t互斥锁

pthread_mutex_lock(&preview_mutex)

pthread_mutex_unlock(&preview_mutex)

	pthread_mutex_lock(&preview_mutex);
	{
	   	pthread_cond_signal(&preview_sync);
	}
	pthread_mutex_unlock(&preview_mutex);

pthread_cond_t条件变量

初始化和销毁条件变量的接口是pthread_cond_init()和pthread_cond_destory();
控制“事件”发生的接口是pthread_cond_signal()或pthread_cond_broadcast();
等待“事件”发生的接口是pthead_cond_wait()或pthread_cond_timedwait()

pthread_cond_signal(&preview_sync)

函数的作用是发送一个信号给另外一个正在处于阻塞等待状态的线程,使其脱离阻塞状态,继续执行.
如果没有线程处在阻塞等待状态,pthread_cond_signal也会成功返回。
eg:pthread_cond_signal(&preview_sync);

pthread_cond_wait(&preview_sync, &preview_mutex)

等待与激发

int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)

int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime)

需要写个JNI的类似demo

标签:线程,sync,C++,基础知识,学习,mutex,pthread,cond,preview
来源: https://blog.csdn.net/qq_25623325/article/details/117597945

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有