|
Hi!
I've encounter the following problem!
<br />
Writec pseudo code using semaphore function wait and signal to solve the following problem:<br />
<br />
A computer system has a pool of N idential printer attached. Processes that wish to print must obtain an available printer. Write two functions:<br />
<br />
int getPrinter(void);<br />
void releasePrinter(int printerID);<br />
<br />
getPrinter obtains an availble printer from the pool of N printers and return the printer number (0 to N-1) as its result. releasePrinter takes a printer number and makes it available for use by other processes.<br />
Here is what i attempt at it
#define N //number of printer;
int numberOfPrinter = N;
int printer[N] //array of N printer;
getPrinter(void)
{
if numberOfPrinter > 0 Then
set printer[numberOfPrinter-1] = used
return numberOfPrinter-1
else
Block
}
releasePrinter(int printerID)
{
numberOfPrinter++;
set printer[printerID] = not used
}
Could you please give me any comment or any advise regarding above problem!
Thanks
|
|
|
|
|
<no_homework_rant>
The purpose of this forum is to help answer programming questions related to Visual C++, not to find people to do your homework for you!
</no_homework_rant>
Software Zen: delete this;
|
|
|
|
|
How to make that a list control (CListCtrl ) never lost the focus?
I have a dialog with a list control and some buttons, and I want that the list box never lost the focus. When I click on any control or on the dialog, the focus will be holed by the list control.
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
First, this is a bad idea. Redesign your app.
Second, process the WM_SETFOCUS, WM_KILLFOCUS messages in all your dialogs controls if you really need to ignore all UI guidelines.
I keep submitting “VB” as a Priority-1 bug, but apparently no one here knows how to fix it. Nick Hodapp, Semicolon
|
|
|
|
|
In win32, what mechanism allow procesess to share a region of memory? The only method i'm aware of is MapViewOfFile() ?? Is there any idea?
Thanks
|
|
|
|
|
Anonymous wrote:
The only method i'm aware of is MapViewOfFile() ?? Is there any idea?
That will create a memory mapped file which is the best method for doing any sort of high speed communication or communication that may create a large number of buffers.
Or you could use GlobalAlloc to create a HGLOBALs with the GMEM_MOVEABLE flag set. This will allocate memory in the pages that are shared across all processes. You will only need to call GlobalLock in order to gain access to the memory from another process. One of the difficulties with this method is that you will need to send a message or do something else to transfer the handle of the HGLOBAL between your two processes.
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
|
What kind of reports can use in VC instead of Crystal?
Do u know ones?
|
|
|
|
|
Hi!
I have the following instruction:
1)Disable all interupts
2) Read the time of day clock
3)Set the time of day clock
4)Change memory map
What of the above instruction should be only allowed in the kernel mode!
I've come with solution is that number 1 should only be allow in the kernel mode. However i dont quite get "change memory map" meaning. Could anyone plse perhap explain the term and give comment about the above question!
Regard,
|
|
|
|
|
I dont understand the context for this question, so it seems to me that there is not enough information to answer your question. Do you know what your memory map is for, or who creates it?
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
Under Vc++ 6.0 and MFC, how can I set items' images of the toolbar.These images were saved as .bmp or .ico. And I known how to load the .bmp to CBitmap.
Help me!!!
Help me!!!
Help me!!!
|
|
|
|
|
Try this:
CToolBar::LoadBitmap()
CToolBar::SetBitmap()
or call CToolBar::GetToolBarCtrl()
And then access single items – more: CToolBarCtrl member functions
Viliam
|
|
|
|
|
I means that one item have its own one image.
A toolbar has several images, not one bitmap to all items.
|
|
|
|
|
I've got this for my tute question!
A large organisation has offices in several countries around the world. Explain why it is desireable for the organisation's directory service to be "multi-master"
Could any one please enlighten me! Thanks.
|
|
|
|
|
Huh ?! I assume that it got to be related to the Active Directory thing, just read about it, it's bound to be explained somewhere in there .
Max.
|
|
|
|
|
I'm trying to generate a short delay of just a few ms, which I need because I am controling a box on the serial port which is very slow and the input is un-buffered so I need to pad the data.
I am using Sleep(x), where x is the number of ms. However, I get a much longer delay than I need, ie Sleep(1) gives me 70ms!
Anyone got any ideas of how I can generate a short delay reliably?
Thanks,
Ali
|
|
|
|
|
You can try Sleep(0), it causes the thread "to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run."
Vagif Abilov
MCP (Visual C++)
Oslo, Norway
Hex is for sissies. Real men use binary. And the most hardcore types use only zeros - uppercase zeros and lowercase zeros.
Tomasz Sowinski
|
|
|
|
|
Thanks for the suggestion, I'm not sure it will give consistent enough results - I'll look in to it though.
Thanks,
Ali
|
|
|
|
|
You didn't say what operating system you were using. I doesn't answer your question, but you may find the following article interesting...
http://www.codeproject.com/system/simpletime.asp
Gary Kirkham
A working Program is one that has only unobserved bugs
|
|
|
|
|
Looks like an interesting article, thanks for the tip.
Cheers,
Ali
|
|
|
|
|
I am afraid there is no way how to suspend process on accurate time.
(Windows are not real - real-time system)
The easiest way is use traditional way – run some loop
(and be on appropriate priority)
And check time...
Something like:
.
.
dwA = GetTickCount();
while(1)
{
dwB = GetTickCount();
if( (dwB-dwA) >= dwTimeout)
break;
}
This is not nice way but sometime can help.
Anyway times about 1 ms are probably unreachable.
Viliam
|
|
|
|
|
Using GetTickCount() is a great idea. I just checked the help and it returns the number of ms since start up, so as you suggest I can use it in a loop to make a basic timer.
I agree that 1 ms is impractical but if I try for 1 ms and get 2 ms or 3ms or even 4ms, that woud be far better than 70+ ms!
Thanks for the help,
Ali
|
|
|
|
|
One thing you have to watch out for. If you keep your computers on all the time, the rollover of the time could effect your calculation (e.g the start time could be greater than the end time). You just have to put in checking for this.
Brigg Thorp
Software Engineer
Timex Corporation
|
|
|
|
|
Good point, as you say pretty easy to check for, I'll make sure I do.
Thanks,
Ali
|
|
|
|
|
as i know, serial port needs a thread (call it thread A) to read data.
u say "delay", delay what? for what?
i assume that u want "delay" (by Sleep) main thread (parent thread of thread A) to active Thread A. this is not correct in concept, the 70ms must be got from Thread A, the time is meaningless, just forget it.
only choice i think is to set a timer (few ms) in main thread for delay, then kill the timer.
includeh10
|
|
|
|