- 博客(162)
- 资源 (8)
- 收藏
- 关注
原创 说说SIGCLD和SIGCHLD
在学习 APUE 信号一章时,书中描述 SIGCLD和 SIGCHLD信号时,我一时没有搞清楚,在查阅一些资料后把二者的不同描述在此。APUE这本书有一个很大的特点是:它全书写的是Unix平台的编程,因此会引入很多不同平台的差异,这在编写跨平台应用程序的时候有很大的参考价值。但是这样也带来了一个不好的后果:如果一个刚接触Unix编程的读者在读这些内容时(假设像我一样使用Linux平台学习),会一时抓不住重点,书中论述的在不同平台下的不同差异反而会成为学习的负担。另外还有一个更糟的问题是:对比的几个平台大部
2021-09-11 11:05:40
1107
原创 QTreeWidget勾选QTreeWidgetItem的处理
1. 简介QTreeWidget提供许多自身状态改变信号,但是缺少了一种常用的信号:勾选其中某一项时的信号(使用的QTreeWidgetItem是可以Check的,通过setCheckState设置)没有Check信号时,可以使用void itemChanged(QTreeWidgetItem * item, int column) 这个信号,但是这个信号的触发情况太多,随便选择一项(并不是勾...
2019-04-29 17:57:42
11408
1
原创 OpenThreads库介绍——Barrier
1. 简介Barrier是线程栅栏类。这是一个对于线程同步颇为重要的阻塞器接口,它的构造函数与BlockCount 类似,可以设置一个整数值,我们可以把这个值理解成栅栏的“强度”。每个执行了Barrier::block()函数的线程都将被阻塞;当被阻塞在栅栏处的线程达到指定的数目时,就好比栅栏无法支撑那么大的强度一样,栅栏将被冲开,所有的线程将被释放。重要的是,这些线程是几乎同时释放的,也...
2018-03-15 14:48:42
1977
原创 OpenThreads库介绍——Block
1. 简介Block 是OpenThreads中的阻塞器类。顾名思义,这个类的作用就是阻塞线程的执行,使用block()阻塞执行它的线程(注意,不一定是定义它的Thread 线程,而是当前执行了block 函数的线程,包括系统主进程),并使用release()释放之前被阻塞的线程。2. 实现OpenThreads库中的Block文件中包括两个类的实现:Block和Block...
2018-03-15 14:48:31
4027
1
原创 OpenThreads库介绍——Condition
1. 简介Condition 类是条件变量。它依赖于某个Mutex 互斥体,互斥体加锁时阻塞所在的线程,解锁或者超过时限则释放此线程,允许其继续运行。这里涉及了几个线程操作中重要的概念:同步,阻塞以及条件变量。线程同步,简单来说就是使同一进程的多个线程可以协调工作,例如让它们都在指定的执行点等待对方,直到全员到期之后才开始同步运行;拥塞,即强制一个线程在某个执行点上等待,直到满足继续运行的条件...
2018-03-15 14:48:17
2651
原创 OpenThreads库介绍——ReadWriteMutex
1. 读写锁简介OpenThreads库中的ReadWriteMutex是一种读写锁,读写锁是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。多读者锁,用于解决读写问题。读操作可并发重入,写操作是互斥的。简单来说就是允许多个线程同时读取资源,但是一旦要修改资源(写操作),那么所有读的线程都必须被阻塞,直到写的线程完成修改。2. 类型读写锁可以根据实际的需...
2018-03-15 14:48:03
827
原创 OpenThreads库介绍——Mutex
1. 简介Mutex 是互斥体接口类。如同pthread 等常用的线程库那样,OpenThreads 也提供了互斥体操作的机制,它有效地避免了各个线程对同一资源的相互竞争,即,某一线程欲操作某一共享资源时,首先使用互斥体成员的lock()函数加锁,操作完成之后再使用unlock 函数解锁。一个线程类中可以存在多个Mutex 成员,用于在不同的地点或情形下为共享区域加锁;但是一定要在适当的时候解...
2018-03-15 14:47:49
1444
原创 OpenThreads库介绍——Thread
OpenThreads库是一个轻量级的跨平台多线程库,在2.x之前是独立发展的一个库,在2.x后并入到OSG的源码中,OSG中大量的多线程操作都是基于这个库编写的。(事实上使用该库是历史原因的问题,在OSG创立的时候,C++标准中并没有C++11引入的线程库),库的详细介绍参考:OpenThreads站点Thread线程线程实现类。它是一个面向对象的线程实现接口,每定义一个Thread...
2018-03-15 14:47:33
6957
原创 go-gl第一个三角形(三)
1. 简述根据OpenGL版本的不同,在场景中绘制几何体的方式和使用的OpenGL函数有很大的差别,概括起来包括: OpenGL模式 方式 备注 LegecyOpenGL 立即模式 LegecyOpenGL DispalyList(显示列表) LegecyOpenGL VertexArray的方式 Lege...
2018-03-12 19:38:00
671
原创 go-gl第一个窗口(二)
1. 初始化程序首先添加引用的包,包括glfw和go-glimport ( "runtime" "github.com/go-gl/glfw/v3.2/glfw" "github.com/go-gl/gl/v3.3-core/gl")程序窗口的创建代码非常简单,需要注意的是runtime.LockOSThread调用是必须的,原因参考:LockOST...
2018-03-09 09:26:15
1276
原创 go-gl搭建开发环境(一)
1. 简介Go语言(Golang)是Google在2009年推出的一种编程语言。Golang是一门开源的语言,可以从github上找到它的源码。Golang也是一门跨平台的语言,可以运行在Windows、Linux、Mac OS X以及Plan9等操作系统上,更多详细的介绍可以参考Golang的官方网站本文主要介绍使用Golang如何开发OpenGL程序,搭建go-gl的开发环境。使用...
2018-03-07 22:57:04
5475
原创 OpenGL的Context(Profile)
OpenGL在渲染的时候需要一个Context,这个Context记录了OpenGL渲染需要的所有信息,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性。在OpenGL 3.0版本之前,OpenGL创建Context都是一致的,随着升级会新增一些内容(例如从OpenGL1.1升级到1.5,会新增一些状
2018-01-12 18:01:50
9203
2
原创 OSG动画库Animation解析(二)
本文继续(一)中的内容,讨论了osgAnimation中的Target和UpdateMatrixTransform以及osgAnimation中对动画的管理
2017-07-26 18:14:36
2801
原创 OSG动画库Animation解析(一)
本文主要介绍osgAnimation中关键帧、插值器、采样器、频道和动画等概念,以及它们的使用方式和原理
2017-07-25 18:27:49
8588
3
原创 OSG渲染状态管理
OSG对OpenGL中状态机的封装,主要介绍与此相关的几个osg的类:State\StateSet\StateAttribute
2017-07-10 18:25:02
7336
OpenThreads库API手册(osg3.6.0)
2018-04-26
VS2015编译OSG的三方库
2017-02-17
Qt ActiveX测试代码
2017-01-04
VS2015下OpenGL开发库(glew、glfw、soil、freeglut)
2016-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人