SHA1LE算法是我们自定义的一种SHA1算法变种,它的计算方法与SHA1一致,改动如下:
- 去掉了因BigEndian设计造成的LittleEndian处理器需要做大小头转换的部分
- 可自定义起始因子
- 可动态修改扰乱因子
SHA1LE算法是我们自定义的一种SHA1算法变种,它的计算方法与SHA1一致,改动如下:
日志系统一直是SDK的重中之中,在DOS时代,单机无法调试图形界面程序的情况下。日志系统是调试信息来源的重要途径。
从单纯的文本文件输出,到 控制台、文件等 等 的多端输出,从单线程到多线程,我们的日志系统经历了一次次的更新与换代。
现在,我们又将迎来全新一代的日志系统。
主要思想是以画点模式绘图,在一个顶点数据下保存left,top,right,bottom四个数据。在Geometry shader中转换成Triangle Strip。
Vertex Shader
#version 330 core
uniform mat4 ModelViewProjectionMatrix;
layout(location=0) in vec4 Vertex;
void main()
{
vec4 lt=vec4(Vertex.xy,vec2(0,1));
vec4 rb=vec4(Vertex.zw,vec2(0,1));
vec4 lt_fin=lt*ModelViewProjectionMatrix;
vec4 rb_fin=rb*ModelViewProjectionMatrix;
gl_Position=vec4(lt_fin.xy,rb_fin.xy);
}
Geometry Shader
#version 330 core
layout (points) in;
layout (triangle_strip,max_vertices=4) out;
void main()
{
vec2 lt=gl_in[0].gl_Position.xy;
vec2 rb=gl_in[0].gl_Position.zw;
gl_Position=vec4(lt, vec2(0,1));EmitVertex();
gl_Position=vec4(lt.x,rb.y, vec2(0,1));EmitVertex();
gl_Position=vec4(rb.x,lt.y, vec2(0,1));EmitVertex();
gl_Position=vec4(rb, vec2(0,1));EmitVertex();
EndPrimitive();
}
在这个模板的范例中,我们为每一个线程指定一个工作颜色。但发放了总计256*线程数量的工作任务。
范例multhread/WorkflowTest,每个线程各有一个工作投递器,独立发放工作。
范例multhread/WorkflowTestUnsort,所有线程共用一个工作投递器,抢占式执行工作。