线程同步的几种方式
1.信号量pv操作
2.互斥加锁
3.条件变量
五层网络协议指的是哪五层
1.应用层
2.运输层
3.网络层
4.链路层
5.物理层
TCP和UDP区别
tcp 面向连接,保证发送顺序,速度慢,必须在线,三次握手,4次挥手
udp 不需要连接,适合直播推流,速度快,对方可能丢包
深度缓存的作用
shader是什么,简述工作原理
mipmap是什么,有什么优缺点?
根据距离的远近决定物体绘制时候选择的贴图纹理
优点:更低的像素分辨率,减轻渲染压力
缺点;占用更多内存,增大打包存储
OpenGL常用缓存buffer
Frame Buffer
Depth Buffer
Color Buffer
Stencil Buffer
https://www.cnblogs.com/ArsenalfanInECNU/p/18001468
shader透明公式
协程和线程的异同
协程通过迭代器每隔一段时间看一眼是否满足条件,根据条件决定是否进行到协程的下一句,协程依旧在主线程上运行
在一个完整的生命周期中,有哪些协程参与工作,如果有,是在哪几个阶段?
update yield retur null
lateupdate yield return waitforendframe
fixedupdate yeidl return waitforfixedupdate
FishManager是一个单例类,且这个单例可能被多个线程引用,完成类的定义
public class FishManager
{
// 私有静态变量用于存储单例实例
private static volatile FishManager _instance;
// 锁对象用于同步线程
private static readonly object _lock = new object();
// 私有构造函数防止外部实例化
private FishManager()
{
// 初始化代码
}
// 公共静态方法用于获取单例实例
public static FishManager Instance
{
get
{
// 第一次检查:如果实例已经存在,则直接返回
if (_instance == null)
{
// 进入同步块之前再次检查实例是否已经被创建
lock (_lock)
{
// 第二次检查:确保在进入锁之后没有其他线程创建了实例
if (_instance == null)
{
_instance = new FishManager();
}
}