当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 做web开发是不是薪水比做应用软件的开发的薪水要低?大概低多少?有前途吗?在北京有3年的web开发工作经验月薪能达到5000吗?大家随便说说相关的情况把~谢谢~ ......
 ·网页读取access表的问题呀    »显示摘要«
    摘要: 已经建立到access数据库表的连接,并能读取数据在网页形成表格,但是在access记录内若是空值的话,则风页表格显示不出来,这样影响整体呀,请问如何判断是否是空值并显示!我用的是下面语句: while not rs.eof response.write"<tr>" for i=0 to rs.fields.count-1 if rs(i).value......


奇怪了。单步跟踪调试能输出预期结果,但编译好了以后运行结果不一样了。

下面是一个简单的多线程程序,一个用于“读”的线程,一个用于“写”的线程。  
  两个线程通过一个hSemaphore   互斥,  
  “写”线程每次向缓冲区BufferTest写入数据。  
  第一次写如ab。。ij,接着转到读线程,读出数据  
  第二次写入bc。。jk,接着转到读线程,读出数据。  
  重复10次。  
  如果我在标注了//BreakPoint的地方设置断点,再单步跟踪就正确输出  
  abcdefghij  
  bcdefghijk  
  cdefghijkl  
  defghijklm  
  efghijklmn  
  fghijklmno  
  ghijklmnop  
  hijklmnopq  
  ijklmnopqr  
  如果一次运行的话就输出  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  jklmnopqrs  
  各位帮帮忙,小弟先谢了。。。。。。  
  代码如下:去掉了错误处理  
  #include<iostream.h>  
  #include<windows.h>  
   
   
         
                      HANDLE     hSemaphore;  
                      CHAR         BufferTest[10];  
                    INT           nWriteFirstChar=97;//  
   
   
  void     WriteThread(char   *p1)  
  {  
  char*     pToBuffer=p1;//BreakPoint  
  int         i=0;  
  for   (int   iter=0;iter<10;iter++)  
  {  
   
      WaitForSingleObject(hSemaphore,INFINITE);  
  while(i++<10)  
  {  
  *pToBuffer++=(char)nWriteFirstChar++;  
  }  
  nWriteFirstChar-=9;  
  i=0;  
                  pToBuffer=p1;      
   
  ReleaseSemaphore(hSemaphore,1,0);            
  }  
  return;  
  }  
   
   
   
  void     ReadThread(char   *p2)  
  {  
          static int   i=0;  
  while   (i++<10)  
  {  
  WaitForSingleObject(hSemaphore,INFINITE);  
  cout<<p2<<endl;//BreakPoint  
                  ReleaseSemaphore(hSemaphore,1,0);  
  }  
  return;  
  }  
  void   main()  
   
  {  
  HANDLE   hThread[2];             //Handles     of   two   threads  
          DWORD     dwIDWriteThread;   //IDofWriteThread  
  DWORD     dwIDReadThread;     //IDofReadThread  
   
  __try  
  {  
  hSemaphore=CreateSemaphore(0,1,1,0);  
                  hThread[0]=CreateThread(0,0,(LPTHREAD_START_ROUTINE)  
                                                WriteThread,BufferTest,0   ,&dwIDWriteThread);  
  hThread[1]=CreateThread(0,0,(LPTHREAD_START_ROUTINE)  
                                            ReadThread,BufferTest,0   ,&dwIDReadThread);  
                  WaitForMultipleObjects(2,hThread,true,INFINITE);  
  }  
         
  __finally    
  {  
  CloseHandle(hThread[0]);  
  CloseHandle(hThread[1]);  
  CloseHandle(hSemaphore);  
  exit(0);  
  }  
   
   
  }  
 

NO.1   作者: tpmao

UP!!!UP!!!UP!!!UP!!!UP!!!UP!!!UP!!!UP!!!

NO.2   作者: 3jaja

WriteThread()完成后才ReadThread()故输出都是jklmnopqrs.  
 

NO.3   作者: In355Hz

WriteThread   一直在执行(WaitForSingleObject   没有产生效果),   ReadThread   在   WrtieThread   执行间得不到时间片执行。  
   
  原因是   WriteThread   中   ReleaseSemaphore(hSemaphore,1,0);   产生的资源计数立即被   WriteThread   的   WaitForSingleObject   消耗掉。建议采用两个   Semaphore   (其实我认为没必要用   Semaphore,两个   Event   就可以了)  
   
  hEvent1   =   CreateEvent(NULL,   FALSE,   TRUE,   FALSE);  
  hEvent2   =   CreateEvent(NULL,   FALSE,   FALSE,   FALSE);  
   
  //   WriteThread  
  WaitForSingleObject(hEvent1,   INFINITE);  
  ...  
  SetEvent(hEvent2);  
   
  //   ReadThread  
  WaitForSingleObject(hEvent2   INFINITE);  
  ...  
  SetEvent(hEvent1);  
   
 


    摘要: 请问在pb里怎样调用另外一个数据窗体里的公有过程? 该过程要接受一个整型的变量。 请高手赐教! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE