<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Frank的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/csxiaoshui</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csxiaoshui]]></copyright><item><title><![CDATA[说说SIGCLD和SIGCHLD]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/120234865</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/120234865</guid><author>csxiaoshui</author><pubDate>Sat, 11 Sep 2021 11:05:40 +0800</pubDate><description><![CDATA[在学习 APUE 信号一章时，书中描述 SIGCLD和 SIGCHLD信号时，我一时没有搞清楚，在查阅一些资料后把二者的不同描述在此。
APUE这本书有一个很大的特点是：它全书写的是Unix平台的编程，因此会引入很多不同平台的差异，这在编写跨平台应用程序的时候有很大的参考价值。但是这样也带来了一个不好的后果：如果一个刚接触Unix编程的读者在读这些内容时（假设像我一样使用Linux平台学习），会一时抓不住重点，书中论述的在不同平台下的不同差异反而会成为学习的负担。另外还有一个更糟的问题是：对比的几个平台大部]]></description><category></category></item><item><title><![CDATA[QTreeWidget勾选QTreeWidgetItem的处理]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/89680109</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/89680109</guid><author>csxiaoshui</author><pubDate>Mon, 29 Apr 2019 17:57:42 +0800</pubDate><description><![CDATA[1. 简介
QTreeWidget提供许多自身状态改变信号，但是缺少了一种常用的信号：勾选其中某一项时的信号（使用的QTreeWidgetItem是可以Check的，通过setCheckState设置）
没有Check信号时，可以使用void	itemChanged(QTreeWidgetItem * item, int column) 这个信号，但是这个信号的触发情况太多，随便选择一项（并不是勾...]]></description><category></category></item><item><title><![CDATA[OpenThreads库介绍——Barrier]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79565783</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79565783</guid><author>csxiaoshui</author><pubDate>Thu, 15 Mar 2018 14:48:42 +0800</pubDate><description><![CDATA[1. 简介



Barrier是线程栅栏类。这是一个对于线程同步颇为重要的阻塞器接口，它的构造函数与BlockCount 类似，可以设置一个整数值，我们可以把这个值理解成栅栏的“强度”。每个执行了Barrier::block()函数的线程都将被阻塞；当被阻塞在栅栏处的线程达到指定的数目时，就好比栅栏无法支撑那么大的强度一样，栅栏将被冲开，所有的线程将被释放。重要的是，这些线程是几乎同时释放的，也...]]></description><category></category></item><item><title><![CDATA[OpenThreads库介绍——Block]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79564334</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79564334</guid><author>csxiaoshui</author><pubDate>Thu, 15 Mar 2018 14:48:31 +0800</pubDate><description><![CDATA[1. 简介



Block 是OpenThreads中的阻塞器类。顾名思义，这个类的作用就是阻塞线程的执行，使用block()阻塞执行它的线程（注意，不一定是定义它的Thread 线程，而是当前执行了block 函数的线程，包括系统主进程），并使用release()释放之前被阻塞的线程。



2. 实现



OpenThreads库中的Block文件中包括两个类的实现：Block和Block...]]></description><category></category></item><item><title><![CDATA[OpenThreads库介绍——Condition]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79558616</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79558616</guid><author>csxiaoshui</author><pubDate>Thu, 15 Mar 2018 14:48:17 +0800</pubDate><description><![CDATA[1. 简介

Condition 类是条件变量。它依赖于某个Mutex 互斥体，互斥体加锁时阻塞所在的线程，解锁或者超过时限则释放此线程，允许其继续运行。这里涉及了几个线程操作中重要的概念：同步，阻塞以及条件变量。线程同步，简单来说就是使同一进程的多个线程可以协调工作，例如让它们都在指定的执行点等待对方，直到全员到期之后才开始同步运行；拥塞，即强制一个线程在某个执行点上等待，直到满足继续运行的条件...]]></description><category></category></item><item><title><![CDATA[OpenThreads库介绍——ReadWriteMutex]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79556711</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79556711</guid><author>csxiaoshui</author><pubDate>Thu, 15 Mar 2018 14:48:03 +0800</pubDate><description><![CDATA[1. 读写锁简介

OpenThreads库中的ReadWriteMutex是一种读写锁，读写锁是计算机程序的并发控制的一种同步机制，也称“共享-互斥锁”、多读者-单写者锁。多读者锁，用于解决读写问题。读操作可并发重入，写操作是互斥的。简单来说就是允许多个线程同时读取资源，但是一旦要修改资源（写操作），那么所有读的线程都必须被阻塞，直到写的线程完成修改。



2. 类型

读写锁可以根据实际的需...]]></description><category></category></item><item><title><![CDATA[OpenThreads库介绍——Mutex]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79555524</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79555524</guid><author>csxiaoshui</author><pubDate>Thu, 15 Mar 2018 14:47:49 +0800</pubDate><description><![CDATA[1. 简介

Mutex 是互斥体接口类。如同pthread 等常用的线程库那样，OpenThreads 也提供了互斥体操作的机制，它有效地避免了各个线程对同一资源的相互竞争，即，某一线程欲操作某一共享资源时，首先使用互斥体成员的lock()函数加锁，操作完成之后再使用unlock 函数解锁。一个线程类中可以存在多个Mutex 成员，用于在不同的地点或情形下为共享区域加锁；但是一定要在适当的时候解...]]></description><category></category></item><item><title><![CDATA[OpenThreads库介绍——Thread]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79551251</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79551251</guid><author>csxiaoshui</author><pubDate>Thu, 15 Mar 2018 14:47:33 +0800</pubDate><description><![CDATA[OpenThreads库是一个轻量级的跨平台多线程库，在2.x之前是独立发展的一个库，在2.x后并入到OSG的源码中，OSG中大量的多线程操作都是基于这个库编写的。（事实上使用该库是历史原因的问题，在OSG创立的时候，C++标准中并没有C++11引入的线程库），库的详细介绍参考：OpenThreads站点



Thread线程

线程实现类。它是一个面向对象的线程实现接口，每定义一个Thread...]]></description><category></category></item><item><title><![CDATA[go-gl第一个三角形（三）]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79501376</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79501376</guid><author>csxiaoshui</author><pubDate>Mon, 12 Mar 2018 19:38:00 +0800</pubDate><description><![CDATA[1. 简述



根据OpenGL版本的不同，在场景中绘制几何体的方式和使用的OpenGL函数有很大的差别，概括起来包括：




  OpenGL模式
  方式
  备注



  LegecyOpenGL
  立即模式
  


  LegecyOpenGL
  DispalyList（显示列表）
  


  LegecyOpenGL
  VertexArray的方式
  


  Lege...]]></description><category></category></item><item><title><![CDATA[go-gl第一个窗口（二）]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79488408</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79488408</guid><author>csxiaoshui</author><pubDate>Fri, 09 Mar 2018 09:26:15 +0800</pubDate><description><![CDATA[1. 初始化程序



首先添加引用的包，包括glfw和go-gl



import (
    &quot;runtime&quot;
    &quot;github.com/go-gl/glfw/v3.2/glfw&quot;
    &quot;github.com/go-gl/gl/v3.3-core/gl&quot;
)


程序窗口的创建代码非常简单，需要注意的是runtime.LockOSThread调用是必须的，原因参考：LockOST...]]></description><category></category></item><item><title><![CDATA[go-gl搭建开发环境（一）]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79476802</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79476802</guid><author>csxiaoshui</author><pubDate>Wed, 07 Mar 2018 22:57:04 +0800</pubDate><description><![CDATA[1. 简介



Go语言（Golang）是Google在2009年推出的一种编程语言。Golang是一门开源的语言，可以从github上找到它的源码。Golang也是一门跨平台的语言，可以运行在Windows、Linux、Mac OS X以及Plan9等操作系统上，更多详细的介绍可以参考Golang的官方网站

本文主要介绍使用Golang如何开发OpenGL程序，搭建go-gl的开发环境。使用...]]></description><category></category></item><item><title><![CDATA[OpenGL的Context（Profile）]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/79032464</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/79032464</guid><author>csxiaoshui</author><pubDate>Fri, 12 Jan 2018 18:01:50 +0800</pubDate><description><![CDATA[OpenGL在渲染的时候需要一个Context，这个Context记录了OpenGL渲染需要的所有信息，可以把它理解成一个大的结构体，它里面记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性。在OpenGL 3.0版本之前，OpenGL创建Context都是一致的，随着升级会新增一些内容（例如从OpenGL1.1升级到1.5，会新增一些状]]></description><category></category></item><item><title><![CDATA[反走样和OpenGL多重采样]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78932603</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78932603</guid><author>csxiaoshui</author><pubDate>Fri, 29 Dec 2017 16:08:35 +0800</pubDate><description><![CDATA[介绍OpenGL中反走样算法MSAA的使用和细节]]></description><category></category></item><item><title><![CDATA[Freeglut中无法打开文件"freeglutd.lib"]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78720651</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78720651</guid><author>csxiaoshui</author><pubDate>Tue, 05 Dec 2017 15:51:22 +0800</pubDate><description><![CDATA[Freeglut无法打开freeglutd.lib错误的处理方法]]></description><category></category></item><item><title><![CDATA[线形对象与平面相交]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78211866</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78211866</guid><author>csxiaoshui</author><pubDate>Thu, 12 Oct 2017 10:31:15 +0800</pubDate><description><![CDATA[直线、射线、线段与平面交点的算法和实现]]></description><category></category></item><item><title><![CDATA[osg几何体的图元的遍历]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78193744</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78193744</guid><author>csxiaoshui</author><pubDate>Tue, 10 Oct 2017 16:04:08 +0800</pubDate><description><![CDATA[OSG提供的通过仿函数遍历几何体的方式]]></description><category></category></item><item><title><![CDATA[OSG可绘制体Drawable]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78136677</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78136677</guid><author>csxiaoshui</author><pubDate>Fri, 29 Sep 2017 19:22:29 +0800</pubDate><description><![CDATA[osg中可绘制体对象]]></description><category></category></item><item><title><![CDATA[非类型模板参数的限制]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78093706</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78093706</guid><author>csxiaoshui</author><pubDate>Tue, 26 Sep 2017 11:49:19 +0800</pubDate><description><![CDATA[C++非类型模板参数的限制]]></description><category></category></item><item><title><![CDATA[C++中typedef和类型别名]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/78038799</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/78038799</guid><author>csxiaoshui</author><pubDate>Wed, 20 Sep 2017 11:24:18 +0800</pubDate><description><![CDATA[C++中类型别名定义typedef以及C++11种 alias declaration（使用using）]]></description><category></category></item><item><title><![CDATA[OSG在事件处理中由于模态对话框导致后续事件出错的问题]]></title><link>https://blog.youkuaiyun.com/csxiaoshui/article/details/77963777</link><guid>https://blog.youkuaiyun.com/csxiaoshui/article/details/77963777</guid><author>csxiaoshui</author><pubDate>Wed, 13 Sep 2017 12:04:12 +0800</pubDate><description><![CDATA[OSG事件处理过程中弹出模态对话框导致后续事件出错的Bug处理]]></description><category></category></item></channel></rss>