File: worker.e

package info (click to toggle)
smarteiffel 1.1-11
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 12,288 kB
  • ctags: 40,785
  • sloc: ansic: 35,791; lisp: 4,036; sh: 1,783; java: 895; ruby: 613; python: 209; makefile: 115; csh: 78; cpp: 50
file content (53 lines) | stat: -rw-r--r-- 1,059 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class WORKER

   create make

feature {NONE}

   make(id: INTEGER) is
      do
         number := id
      end

feature {ANY}

   work_done: INTEGER -- count the "amount" of work done

   do_work is
      local
         current_time, end_time: MICROSECOND_TIME
      do
         -- to simulate some work that takes time, we loop 
         -- to "work" some time varying from 1 to 2 seconds
         from
            current_time.update
            random.next
            end_time := current_time + random.last_double + 1.0
         until
            current_time > end_time
         loop
            current_time.update
         end
         work_done := work_done + 1
         print_status
      end

   print_status is
      do
         io.put_string("Worker number ")
         io.put_integer(number) 
         io.put_string(" just finished job ")
         io.put_integer(work_done)
         io.put_string(".%N")
      end

feature {NONE}

   number: INTEGER -- worker identifier

   random: MIN_STAND is
      once
         !!Result.make;
      end;

end