Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Clojure - Примеры28 апреля 2011Оглавление: 1. Clojure 2. Макросы 3. Примеры Hello world: Потокобезопасный генератор уникальных серийных номеров: ] (defn generate-unique-id "Возвращает различные числовые ID для каждого вызова." )) Анонимный подкласс (def bit-bucket-writer (proxy )) (defmacro noprint "Вычисляет заданные выражения, заглушая весь *вывод* на экран". `(binding ~@forms)) (noprint ) 10 потоков, манипулирующих одной общей структурой данных, которая состоит из 100 векторов, каждый из которых содержит 10 уникальных чисел. Каждый поток многократно выбирает две случайных позиции в двух случайных векторах и обменивает местами их значения. Все изменения векторов происходят в единой транзакции путем использования системы транзакционной памяти clojure. Поэтому даже после 1000 итераций в каждом из потоков числа не теряются. (defn run )))) swap # v2 i1 i2 ] (dosync i1)] assoc i1 i2)) assoc i2 temp)))) report #(do ) (println "Distinct:" )))))] )))) )) Вывод предыдущего примера: ( ... ) Distinct: 1000 ( ... ) Distinct: 1000 Просмотров: 2567
|