多线程的应用!
来源:互联网 发布:目前java主流开发框架 编辑:程序博客网 时间:2024/04/30 12:55
1.多线程建议使用信号量来控制线程,可以使线程稳定一些
2.多线程中若要赋值全局或程序集变量要进入许可区,赋值完毕后退出
3.线程中尽量少使用界面组件,取某组件的内容的话应该不会怎么,不过如果多线程需要对同一个组件赋值的话那得先进入许可区(超级列表框这种类型的会好点,毕竟较赋值的列和项目不同)
4.在线程中很要注意的,尽量避免使用编码转换,编码转换会使线程很不稳定,原因我也不知道,若需要的话也要先进入许可区,完后退出
5.在线程中尽量避免多线程调用用一个子程序,若真有这需要,就把子程序写在类中调用
6.创建线程后的线程句柄,若无需使用则早点关闭(关闭线程句柄不会影响线程执行)
7.使用易语言的标签反馈事件,据说使用标签反馈事件线程会更稳定,不过会有点慢,和卡,我没测试过这个,,,
8.CPU亲和性,多核的CPU有可能出现CPU亲和性问题,据说这个函数可以解决“SetThreadIdealProcessor”
9.强烈反对使用易语言的“强制结束线程()”命令,改命令会导致线程占据的系统资源未被释放,等等坑爹事
10.共享资源读写要加锁,这是常识,和第二条差不多
11.线程中使用“处理事件”是无用的
信号量的介绍:
信号量就比如一个容器,创建一个线程他的就给他的空闲区就-1,而线程执行完毕就给他的空闲区+1,当线程数达到了你设置的容量,则就会自动等待,到有空闲了信号才会给他继续创建线程
临界区(许可区):
当进入许可区时,程序内所有其他线程执行到也准备执行许可区内的代码的时候,就会进入挂起状态,等到他退出许可区,下一个线程才会开始,相互排斥,
互斥量
互斥量与临界区类似,不同的是互斥量可以跨越进程,而临界区只能在自身进程内,当然互斥量速度是比临界区稍慢了一点
总结:多线程崩溃的原因大多数是,比如a在重新赋值n资源届时另一个线程的
b也要访问n资源,b获取到的内存指针是原来没被a修改的指针,而当b访问n资源时,这时n资源已经被a给修改了,导致内存错误,在易语言的多线程中不能使用编码转换,读取配置项,取现行时间(),等,这些命令本身就不支持多线程,然后,就没有然后了
纯手打,边想边打,打了一个多小时,我也是小菜鸟,如果有说的不对的地方,
或者你有更好的想法就请回复说下吧,非常感谢!
2.多线程中若要赋值全局或程序集变量要进入许可区,赋值完毕后退出
3.线程中尽量少使用界面组件,取某组件的内容的话应该不会怎么,不过如果多线程需要对同一个组件赋值的话那得先进入许可区(超级列表框这种类型的会好点,毕竟较赋值的列和项目不同)
4.在线程中很要注意的,尽量避免使用编码转换,编码转换会使线程很不稳定,原因我也不知道,若需要的话也要先进入许可区,完后退出
5.在线程中尽量避免多线程调用用一个子程序,若真有这需要,就把子程序写在类中调用
6.创建线程后的线程句柄,若无需使用则早点关闭(关闭线程句柄不会影响线程执行)
7.使用易语言的标签反馈事件,据说使用标签反馈事件线程会更稳定,不过会有点慢,和卡,我没测试过这个,,,
8.CPU亲和性,多核的CPU有可能出现CPU亲和性问题,据说这个函数可以解决“SetThreadIdealProcessor”
9.强烈反对使用易语言的“强制结束线程()”命令,改命令会导致线程占据的系统资源未被释放,等等坑爹事
10.共享资源读写要加锁,这是常识,和第二条差不多
11.线程中使用“处理事件”是无用的
信号量的介绍:
信号量就比如一个容器,创建一个线程他的就给他的空闲区就-1,而线程执行完毕就给他的空闲区+1,当线程数达到了你设置的容量,则就会自动等待,到有空闲了信号才会给他继续创建线程
临界区(许可区):
当进入许可区时,程序内所有其他线程执行到也准备执行许可区内的代码的时候,就会进入挂起状态,等到他退出许可区,下一个线程才会开始,相互排斥,
互斥量
互斥量与临界区类似,不同的是互斥量可以跨越进程,而临界区只能在自身进程内,当然互斥量速度是比临界区稍慢了一点
总结:多线程崩溃的原因大多数是,比如a在重新赋值n资源届时另一个线程的
b也要访问n资源,b获取到的内存指针是原来没被a修改的指针,而当b访问n资源时,这时n资源已经被a给修改了,导致内存错误,在易语言的多线程中不能使用编码转换,读取配置项,取现行时间(),等,这些命令本身就不支持多线程,然后,就没有然后了
纯手打,边想边打,打了一个多小时,我也是小菜鸟,如果有说的不对的地方,
或者你有更好的想法就请回复说下吧,非常感谢!
0 0
- 多线程的应用 多线程
- ODBC的多线程应用
- 多线程的应用
- 多线程委托的应用
- 多线程的基本应用
- Java-多线程的应用
- C#多线程的应用
- 【JAVA】多线程的应用
- 多线程的应用!
- Cocos2dx 多线程的应用
- 多线程的应用
- 多线程的应用
- 多线程的应用场景
- 多线程的应用场景
- 多线程的应用
- SQLite的多线程应用
- 多线程-join的应用
- 多线程的简单应用
- c#在使用panel容器将无边框窗体作为子窗体的时候点击窗体控件激活窗体的办法
- 第23周工作计划表
- C++ Primer Plus的若干收获--(十三)
- js积累二
- fvcom学习遇到困难
- 多线程的应用!
- js积累三
- Codeforces Round #251 (Div. 2) D 二分
- CentOS6 图形界面(gnome)安装
- FTPClient
- poj 2251 Dungeon Master()
- 中国并不是世界毒窝 请看微软提供图表
- Java Socket通信实现文件传输/图片传输
- 第二十三周工作日志