Advertisement
Guest User

PPD(2)

a guest
Nov 20th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. De Black Friday un magazin de produse, primeste un volum foarte mare de
  2. comenzi ce trebuie sa fie procesate.
  3. Fiecare produs face parte dintr-o anumite categorie, ce este procesata de un
  4. anumite departament (electrocasnice, papetarie)
  5. Se doreste rezolvarea acestei probleme folosind un mecanism de sincronizare
  6. de tip producator-consumator.
  7. Producator - client ce introduce o comanda pentru un anumit produs in sistem.
  8. Consumator - persoana dintr-un departament ce proceseaza comenzile de
  9. produse asociate departamentului lui
  10. Comanda - mesaj adaugat intr-o coada de un client, ce contine un nume de
  11. produs si categoria din care face parte.
  12. Structura: (tip, nume_produs)
  13. E.g:
  14. (“electrocasnice”, “Frigider”)
  15. (“papetarie”, “Caiet”)
  16. pentru nume de produse se pot folosi random strings
  17. Structura de date:
  18. Folosirea unui Adaptive FIFO (inserare la sfarsit, citire de la inceput in
  19. functie de tip) cu o implementare pe linked-list cu urmatoarele operatii:
  20. insert(a: Real)
  21. pre: this=[a(0),...,a(n)] a.i. pentru orice i: 0<i<n => a(i-1)
  22. <=a(i)<=a(i+1)
  23. post: a este adaugat in lista pe pozitia corespunzatoare:
  24. this=[a(0), ...a(i), a, a(i+1)...,a(n)] a.i. a(i) <=a<=a(i+1)
  25. delete(a: Nod)
  26. pre : exista pos o pozitie valida in lista a.i. lista(pos)= a
  27. post: nodul a este sters din lista
  28. extrage(T: Tip): Comanda
  29. pre: this valid, T valid
  30. post: returneaza o comanda de tipul T
  31. getIterator():Iterator
  32. pre : lista valida
  33. post: result = it , it in Iterator pe listaDescriere functie extrage:
  34. - parcurgere lista de la inceput la sfarsit extrangandu-se ultimul element
  35. de tip T
  36. - stergere nod dupa ce comanda a fost extrasa (apel delete)
  37. Se doreste implementarea unui mecanism de sincronizare la un nivel cat
  38. mai eficient in timpul operatiilor insert/delete. (fine grain/course grain)
  39. Nota maxima se poate obtine doar pentru fine grain (nota 9).
  40. Testare:
  41. 1. Thread 1 (Producator) -> adauga in aceasta ordine, 5 produse de tipul A,
  42. 10 produse de tipul B, 20 de produse de tipul A (cu un delay 2 ms)
  43. 2. Thread 2 (Producator) -> adauga in aceasta ordine, 10 produse de tipul
  44. B, 2 produse de tipul A, 5 produse de tipul B, 10 produse de tipul A (cu un delay
  45. 2 ms)
  46. 3. Theard 3 (Consumator tip A) -> proceseaza mesajele de tipul A (cu un
  47. delay de 5ms)
  48. 4. Theard 4 (Consumator tip A) -> proceseaza mesajele de tipul A (cu un
  49. delay de 3ms)
  50. 5. Theard 5 (Consumator tip B) -> proceseaza mesajele de tipul B (cu un
  51. delay de 5ms)
  52. 6. Theard 6 (Consumator tip B) -> proceseaza mesajele de tipul B (cu un
  53. delay de 3ms)
  54. Fiecare thread isi va loga actiunile intr-un fisier de tranzactii.log
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement