上次发了一个易语言内存生成验证码的源码,后来压力测试的时候发现多线程下程序会崩溃。原因是 GDI 在多线程创建hDC的时候,经常会失败,内存hDC只有一个工作区域,导致多线程冲突
所以后来研究了一段时间发现,多线程下不能用 GDI,需要用DGI+,虽然 DGI+的确是线程安全的,可是它保证安全的做法可能类似于我们易语言加许可区,所以严格意义上来说, DGI+也不是多线程的,只不过在多线程下是安全的而已
后来网上查找资料,得到了一个让人很沮丧的说法:
这是CSDN上的人说的,他说:听公司一个图形方面的大佬说过,图形绘制主流的技术,GDI、GDI+、OpenGL,D3D什么的都不支持多线程,同一时间内,只能有一个线程在屏幕绘制,所以,根本就没有什么多线程绘图这个玩意。。。
根据我这几天的测试,查看内存和CPU数据,也确实发现即使是GDI+,也只能单线程运行,多线程下也是排队进行绘图的,因为Windows只有一个画板。。。
好了,那就不纠结了,既然连OpenGL都不支持多线程绘图,那就老老实实的就这样用着吧
============================================================================================
本源码介绍:
还是跟上次一样,只有一个公开子程序,里面的参数做了一下调整
特点是 每个字符都可以用不同的字体,字体可以随时扩充,在哪里找到了什么好看的字体,直接安装到电脑里,然后把字体名称添加到参数里就可以了
理论上,如果经常更换字体,字体足够多的话,制作识别库是很头疼的一件事,这个用于易语言web开发很合适哟