|
Hi,
I created 1 worker thread AFxBeginThread and 4 UI Thread via new CWinThread
However when I look at the thread display under debug Visual Studio display all threads as Worker Threads
Thanks
|
|
|
|
|
And do you have a question, related to C++?
|
|
|
|
|
I thought about posting this in a different forum
But the concept of UI threads and worker threads
is MFC
|
|
|
|
|
I never quite placed much attention as to how threads are labeled in the debug display but... does it really matter? A UI thread is really just a label for a thread, it differs only in the extra functionality that comes from the framework around it, so does the label really make a difference? If it works fine why are you worried about the label the debugger is using?
|
|
|
|
|
ForNow wrote: I created 1 worker thread AFxBeginThread and 4 UI Thread via new CWinThread Maybe I'm misunderstanding your intent here, but worker threads and UI threads are both created using AfxBeginThread() . The difference is whether the thread has a message pump or not.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Sorry you are right the different UI
Has CWinThread::Run. While workers have a thread proc
|
|
|
|
|
........
modified 26-Feb-13 6:47am.
|
|
|
|
|
Why are you using CString s for your data buffers, and why are you trying to convert the file content with wcstombs() ? Use the BYTE (unsigned char ) type for your data buffer, and read the files in binary mode.
|
|
|
|
|
|
I already told you how to do it. Do not use CString it will not work. And do not convert the file contents, it will leave you with corrupt data. A file is just a stream of bytes and in moving it from one location to another you should process it as such.
|
|
|
|
|
Message Closed
modified 15-Feb-13 1:10am.
|
|
|
|
|
If there is still a problem in this code then you need to run it through your debugger and isolate the point of failure. We cannot guess what is happening without more information.
|
|
|
|
|
|
|
Hi,
I'm hitting a snag as I try to read back an array which has been written to a text file. Here's the relevant part of the code:
if((fp=fopen("myfile","r"))==NULL)
{
printf("Unable to open file.\n");
exit(1);
}
for(j=0;j<6;j++)
{
for(l=0;l<7;l++)
{
k=fgetc(fp);
if(k==",") break;
str2[j][l]=k;
}
}
fclose(fp);
for(j=0;j<6;j++)
{
for (l=0;l<7;l++)
{
printf("%c", str2[j][l]);
}
}
This is generating an error:
[Warning] comparison between pointer and integer.
Though it runs, it is revealing that the break code which checks for a comma is not functioning as the compiler warns. Why is it claiming this is a pointer? Why is it saying anything about an integer when I've deliberately cast k as a character?
Thanks for any input.
------
Update: The problem was solved by: (a) changing the double quotes to single quotes (apostrophes) and (b) switching
if(k==",") break; below the assignment. In order to match the file derived string with one defined in code I also had to modify it:
str2[j][strlen(str2[j]-1]='\0'; as there is something foreign added in the file transfer process.
Thanks, and if there is a mark as solved button I couldn't find it
modified 14-Feb-13 16:08pm.
|
|
|
|
|
Try this:
k=fgetc(fp);
if(k==',') break;
Hope that will work.
|
|
|
|
|
Hi,
Thanks for the reply.
As far as I can see that's what I have except without the assignment to the array:
str2[j][l]=k
but that is basically what I'm trying to accomplish. The printing at the end is just to confirm that the file was successfully written to the array.
|
|
|
|
|
Replace the double-quotes in your comparison with single-quotes. In C and C++, double-quotes mean a pointer to a string of characters, but single-quotes mean a character literal.
|
|
|
|
|
Hi, thanks for your response. That helped. I also changed the control in the inside printf loop to
for(l=0;*(str2[j]+l);l++)
Now it's compiling with no warnings and is reading back pretty good text, though there is some stray characters after some of the words in the test text.
|
|
|
|
|
Why are you making life so complicated for yourself? Use a tokeniser such as strtok() [^].
|
|
|
|
|
Thanks Richard,
I'm going to try to track down the errors in this code first and then experiment with this tokenizer. At this point I'm trying to get a really granular understanding of C which even means reinventing the wheel at times, just for my own edification
|
|
|
|
|
Just glancing at your code I would suggest using proper names for variables. Also, read up on the difference between a character and a string.
|
|
|
|
|
Thanks.
This is just a test of concept program so I'm not doing 'real' variable names. As a former VB person I'm still in the CCAC (code cuss and cry) phase of learning C
modified 14-Feb-13 16:13pm.
|
|
|
|
|
Jeffrey Webster wrote: At this point I'm trying to get a really granular understanding of C which even means reinventing the wheel at times, just for my own edification A good strategy.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Assume that there are 8 Modules which one of them is Supervisor. They are implemented in C++ classes, so we have 1 Object of Supervisor and more than one Object of other module.
The Supervisor assign Tasks to each other module, and whenever they finished their tasks or faced with a problem, they should inform the Supervisor.
I think that the best way to implement this behavior is Interruption or something like that.
Now, I want to know how to implement it or is there any solution for this problem?
|
|
|
|