问个多线程发邮件的问题

subzero 2004-07-29 01:15:18
一个console应用,单线程多线程发邮件都可以成功发送,但是我在线程函数的开始printf(start),结束printf(end),发现线程是顺序执行的,也就是说第一个线程完全执行完并且退出才开始执行第二个线程,通过输出可以看出在开始执行第一个线程的时候其余的线程已经建立了,而且所有线程的优先级是一样的,请问这是怎么回事?
...全文
203 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
subzero 2004-11-12
  • 打赏
  • 举报
回复
那就是说,不使用临界区就没问题了?
那高速email群发的软件到底是如何实现的?
51365133 2004-11-12
  • 打赏
  • 举报
回复
MSG msg;
while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
DispatchMessage(&msg);
TranslateMessage(&msg);
}
betsyalan 2004-10-25
  • 打赏
  • 举报
回复
你使用了临界区,所以你的线程执行完一个才执行下一个线程,通常使用临界区是为了保护工用的资源或者变量等,你在这里使用临界好象不是很合适
gdy119 2004-10-25
  • 打赏
  • 举报
回复
楼主对何时间使用多线程了解吗?
多线程(你创造线埕的时候优先级是一样的)怎么会是同步执行?
subzero 2004-10-14
  • 打赏
  • 举报
回复
别又沉了
subzero 2004-10-13
  • 打赏
  • 举报
回复
好么,这个问题可沉了有段时间了,我都不报希望了
感谢batizhou
那就是说,这样的多线程操作,不需要临界区了?,那我对stdout作输出不会有影响吗?
nwpulipeng 2004-10-10
  • 打赏
  • 举报
回复
帮顶混分
batizhou 2004-10-10
  • 打赏
  • 举报
回复
entercriticalsection是进入临界区呀,一次只能有一个线程进入临界区的代码,所以你的线程是顺序执行的。entercriticalsection是用来保护那些不能被多个线程同时访问的数据的,如链表的插入,不能当第一个线程插到一半时,另外一个线程又来插。
临界区内的代码应该尽可能少,而且应该没有阻塞的操作,在临界区里面用阻塞的recv就是不对的。
Hotthing 2004-10-10
  • 打赏
  • 举报
回复
顶一下
subzero 2004-07-31
  • 打赏
  • 举报
回复
这个。。难道是问题太简单了么?
subzero 2004-07-30
  • 打赏
  • 举报
回复
顶一下
大家帮忙看一下
subzero 2004-07-29
  • 打赏
  • 举报
回复
dword winapi threadfunction(lpvoid param){
...
entercriticalsection
...
while(1){
recv
switch
send or break loop
}
...
leavecriticalsection
...
}

大致是这样的,会是哪里出现的问题呢?
watt 2004-07-29
  • 打赏
  • 举报
回复
有没有代码?

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧