增加網址:
文章備註、標題(會記錄下來,但是暫時不會顯示):
[綜合]無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:11:29.998 No.13327323
回覆: >>13327832
評分:1, 年:1, 月:1, 週:1, 日:1, [+1 / -1] 最後更新:2018-12-22 05:21:49
附圖
coding島民救我...

我現在在寫一個虛擬交易系統

目前是把市場上的單都存到一個queue裡,並且規畫十個執行序同時執行

想請問我要如何知道
1.queue裡的單現在有沒有任何一個執行緒正在處理?
(怕執行序重複取到同一單)

2.如果今天user要刪單,要如何判斷現在這張單不在執行緒運作中?
(怕user已經撤單了但執行緒處理完之後仍判定成交)

求求各位島民了
感恩 感謝

沒人知道的話我明天再問...
無題 無名 ID:XyVXLdM2 2018/12/14(五) 22:15:34.970 No.13327366
回覆: >>13327387
改成 single thread
結案
無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:17:26.304 No.13327387
回覆: >>13327767
附圖
>>13327366
可是這個系統是每隔X秒就要執行一次媒合

假設X秒之後上一次還沒做完怎麼辦?
無題 無名 ID:623MxAK2 2018/12/14(五) 22:18:28.745 No.13327396
回覆: >>13327546
先說說你用什麼語言寫
無題 無名 ID:76.5nA9U 2018/12/14(五) 22:20:16.928 No.13327411
回覆: >>13327546
我勸你還是不要玩multi thread
吃力不討好
無題 無名 ID:623MxAK2 2018/12/14(五) 22:26:22.063 No.13327466
回覆: >>13327546
給一些方向好了

第一個問題:
怕執行序重複取到同一單 -> 執行緒有處理避免存取到共享資
源的問題,找關鍵字「執行緒 鎖定」應該可以給你一些解法
無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:34:58.266 No.13327546
回覆: >>13327582
附圖
先謝謝各位回覆

>>13327396
C#小黑窗

>>13327411
我問公司做十幾年的前輩他說他也沒用過= =

>>13327466
但我的queue比較特別
一般執行序只能Lock變數
我的queue是用資料庫寫的
因為
1.當機時queue也不會不見
2.要增開伺服器時也可以共用同一個queue
無題 無名 ID:623MxAK2 2018/12/14(五) 22:37:17.848 No.13327582
回覆: >>13327727
>>13327546
你是哪種資料庫?一般資料庫系統都有處理並行處理的問題
https://dotblogs.com.tw/regionbbs/2011/04/15/sqlserver_lock_control_type
無題 無名 ID:wbNvGfvM 2018/12/14(五) 22:37:43.458 No.13327587
幹 所以你把task分給child thread處理後沒有記錄狀態ㄛ
你需要IPC送指令給childㄚ
切記不要用到shared memory還有避免deadlock情況
每個語言實作不一樣
不過如果還在寫Java建議快點去自盡比較快
無題 無名 ID:JB2O4H6k 2018/12/14(五) 22:40:06.472 No.13327610
回覆: >>13327727
不要multi thread +1
沒那個屁股就別吃那個瀉藥
寫single thread然後加一堆規則處理時間到沒跑完的問題還比你硬寫multi簡單

要寫multi thread,你先做一個實驗:
叫五個thread各跑一趟
[aa]
for(int i=0;i<100000000;i++)
a++;
[/aa]
a是global
邏輯上跑完應該要a+=500000000
但實際執行出來不會,會變少
想想這是為什麼、想想如何避免
想不出來就代表你沒那個能力玩multi thread
無題 無名 ID:XyVXLdM2 2018/12/14(五) 22:44:52.550 No.13327654
回覆: >>13327727
訂單進來先由一個 process 分配好誰來處理
直接推去負責處理的 process 的 queue 裡就好了
這種設計一般來說都是每個 process 會有自己的 queue 吧
無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:47:18.663 No.13327679
回覆: >>13327696
附圖
謝謝島民 我決定寫單線程了
無題 無名 ID:Mo2fmR4Y 2018/12/14(五) 22:48:57.248 No.13327696
>>13327679
從入門到放棄
無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:52:10.827 No.13327727
附圖
>>13327582
MSSQL

>>13327587
>>13327654
看噗懂........

>>13327610
>想想這是為什麼、想想如何避免

我只知道是其中一個線程A取了a(假設是1)
另一個線程B也同時取了a(也是1)

A執行a++ (也就是a=a+1),結果是2
B也執行a++ (因為取到的a也是1),結果也是2
所以最後的結果不會是500000000

正確的解法應該是是先把a LOCK住
等到A執行完 B才能去拿

可是這樣就造成 線程依然有先後順序之分 沒有辦法平行處理

靠邀 那這樣寫多線程幹嘛==?
無題 無名 ID:Hmb1qWtU 2018/12/14(五) 22:53:19.175 No.13327740
>>13327587
幹 Java不熱門了嗎?
無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:54:50.873 No.13327753
附圖
對了 我發開串這篇文的時候剛下班
奉勸各位千萬別當軟體工程師
幹你娘= =
無題 無名 ID:ktci17p. 2018/12/14(五) 22:55:55.966 No.13327767
回覆: >>13327789
>>13327387
現在都改逐筆交易了
你還在5秒搓合
無題 無名 ID:623MxAK2 2018/12/14(五) 22:56:47.508 No.13327774
>>13327753
你只是進錯公司了
無題 無名 ID:T6lJF1eo 2018/12/14(五) 22:58:09.073 No.13327787
回覆: >>13328417
>>13327753
相較於硬體、韌體,其實我覺得軟體算比較好了耶
無題 無名 ID:4bHcML7Q 2018/12/14(五) 22:58:11.364 No.13327789
附圖
>>13327767
我又不是金融背景的 怎麼會知道現在機制是怎樣......

>>13327774
那你要介紹嗎= =
感恩 感謝= =
無題 無名 ID:cw7GaGI6 2018/12/14(五) 22:59:29.794 No.13327811
>>13327753
台灣沒一個工作不FUCK的......
無題 無名 ID:K9FPio4. 2018/12/14(五) 23:00:45.024 No.13327832
>>13327323
用mutil level queue 多層次佇列 可以去查查看
無題 無名 ID:DW6rrKfs 2018/12/14(五) 23:00:46.270 No.13327833
>>13327727
以前寫多線程是因為以前電腦太爛
無題 無名 ID:14aiBE5k 2018/12/14(五) 23:01:29.163 No.13327839
回覆: >>13327864
給每個單一個boolean 處理的時候改成true就好了啊
無題 無名 ID:623MxAK2 2018/12/14(五) 23:03:22.244 No.13327859
回覆: >>13327899
>>13327789
你又沒說住哪要怎麼推XD

我只能勸在學校基礎打好,出來工作累積年資和經驗,
找得到空閒還是要進修唸書,才有換好工作的本錢,雖
然很癈話但是也沒其他辦法Orz
無題 無名 ID:4bHcML7Q 2018/12/14(五) 23:03:42.471 No.13327864
>>13327839
可是我在資料庫拿資料的時候
我必須執行
1.Check這張單子能不能拿 (if boo = true)
2.可以拿就拿起來
3.拿起來之後把bool 設為false

假設我執行到1.的時候 另外一個線程執行到2.5
那不就拿到同一單了= =
無題 無名 ID:JB2O4H6k 2018/12/14(五) 23:04:39.121 No.13327879
>>13327727
>>線程依然有先後順序之分 沒有辦法平行處理
>>靠邀 那這樣寫多線程幹嘛==?
多線程本來就是用來處理不會互相干涉的部分
會干涉的部分就是要統整到同一個thread裡處理
分配工作跟統整資料需要成本,多線程處理互不干涉的工作則省下時間
省的時間有超過成本就划算
反之如果你互不干涉的工作很少,可能做多線程反而慢

像是大家一起++就是典型的不該做成多線程的東西

>>13327789
不是金融業的問題,是科技
五秒搓合是給比你還老的老電腦跑的
這年頭的CPU做這些工作根本都是瞬殺,根本沒必要排程
無題 無名 ID:.vm7XN7E 2018/12/14(五) 23:05:15.203 No.13327882
回覆: >>13327900
>>13327774
進錯公司+1

我現職公司的老闆允許我們在家做

一個月只要3天開會有到就好

他說你哪裡產力最高就乖乖待在哪做就好
無題 無名 ID:pSaXq5fw 2018/12/14(五) 23:06:15.183 No.13327892
>>13327864
最近唸os才學會那堆以前沒學過的名字
但一直有在用的
為什麼要背這玩意阿!!!
無題 無名 ID:14aiBE5k 2018/12/14(五) 23:06:24.017 No.13327894
回覆: >>13327910
沒拿的時候false

1. 拿單子 true的不能拿 拿了的單改成true
2....
3.....
無題 無名 ID:4bHcML7Q 2018/12/14(五) 23:07:01.606 No.13327899
>>13327859
唉 我非本科系 極限就在那裡
資料結構跟演算法都不夠強
做再久頂多就軟體[工] 永遠當不了軟體工程[師]

目前的狀態是學了半年code,上班3個月,在土城板橋一帶上班
有沒有附近好康可以介紹的R= =
無題 無名 ID:623MxAK2 2018/12/14(五) 23:07:02.418 No.13327900
>>13327882
上人力銀行很多要求一堆才3-4萬,想找正
常上下班工作都是奢求,什麼世道orz
無題 無名 ID:JB2O4H6k 2018/12/14(五) 23:07:53.819 No.13327910
>>13327894
你比原PO還菜,別鬧了
無題 無名 ID:5jpMU7Xw 2018/12/14(五) 23:07:56.212 No.13327911
>1.queue裡的單現在有沒有任何一個執行緒正在處理?
資料庫系統都會支援並行吧。

>(怕user已經撤單了但執行緒處理完之後仍判定成交)
交給資料庫的交易去判斷,
要嘛交易成功,要嘛失敗,
不會有競合的問題。

除非你不使用任何資料庫,打算要自己寫一個?
無題 無名 ID:MVKT2opY 2018/12/14(五) 23:10:08.968 No.13327932
比較高階的語言應該會有提供執行續包去找找那個資料結構可用ww
跑到中間要停止執行只能強制中斷了八
不然就是result回來再刪除
無題 無名 ID:623MxAK2 2018/12/14(五) 23:10:28.483 No.13327940
>>13327899
土城板橋工作機會還少嗎,我淡水都快找不到工作了orz
看看台北有沒有正常點的缺吧

非本科系只能找時間把基礎補完了,雖然我上一份工作
做到都快把這些忘光了XDD(做韌體的悲哀~
無題 無名 ID:K1kc0Hrs 2018/12/14(五) 23:11:12.018 No.13327947
各單子處理的時間會差很多嗎?
如果不會差很多的話
在存進去queue的時候就先給定好編號
10個執行序跑的時候只執行各自的區塊(%10=0~9)
這樣子處理呢?
無題 無名 ID:5jpMU7Xw 2018/12/14(五) 23:15:04.726 No.13327979
回覆: >>13328007
>>13327899
如果你使用了任何一套DBMS

你上面問的問題都是多餘的,
資料庫會幫你解決,
但是如果你想要自己去學裡面的內涵,
這裡面最少包含好幾本教科書的知識。

本科系的學生都需要花2~3學期的時間,
才能學完大概的基礎架構,
所以沒有人可以在留言版,
用短短幾篇問答就跟你解釋清楚。
無題 無名 ID:mSbB5/T. 2018/12/14(五) 23:17:33.297 No.13328007
>>13327979
我學校是開三學年的課程啦
大二必修
大三大四選修
無題 無名 ID:gSDL/EXo 2018/12/14(五) 23:39:28.702 No.13328207
回覆: >>13328311
上面有大佬說不要寫JAVA
那應該學甚麼比較好啊?
我JAVA的書都嗑了一陣子了

我中字輩數學系畢業肥宅
想寫寫code 求建議
無題 無名 ID:5jpMU7Xw 2018/12/14(五) 23:47:16.592 No.13328263
回覆: >>13328270
學java不錯拉!

可以應用的層面非常廣,
學習難度比起C++容易很多。

缺點大概就是又老又肥...
無題 無名 ID:XyVXLdM2 2018/12/14(五) 23:48:18.477 No.13328270
>>13328263
那你有聽過 Scala 嗎
無題 無名 ID:5jpMU7Xw 2018/12/14(五) 23:50:30.341 No.13328287
如過想要學年輕又新潮的語言。

我跟你講啦...
年輕的語言沒有市場啦,只能在學校玩玩,出去就沒用了。
無題 無名 ID:Jtx82w96 2018/12/14(五) 23:52:49.188 No.13328311
附圖
>>No.13328207
我學生就是學Java Swing的

說真的Java的優點是跨平台
缺點也是

一般人和公司作業員光是要他們去裝jre就嫌麻煩了
更別說得一直更新,而且不是管理員權限還不能更新
麻煩的要死

這是使用方面

開發部分
我看部門的碼農C#,圖形介面拉一拉
程式碼就跑出來了
我當時開發還在那邊為了排版想相對座標傷腦筋
全部都是手動產生的程式碼
跟白癡一樣
現在想起來真是超沒意義又耗精力
無題 無名 ID:XyVXLdM2 2018/12/14(五) 23:56:34.664 No.13328341
回覆: >>13328380
>>13328311
Compile Once Debug Everywhere 的 Java
最後我們倒是看到了 JavaScript 在各種裝置上都能跑 (只要有瀏覽器)
無題 無名 ID:A3nA4OGA 2018/12/14(五) 23:59:54.000 No.13328364
附圖
>>13327864

關聯式資料庫都有ACID,MSSQL 更可以加上 WITH(UPDLOCK) 來避免高併發 DeadLock 的發生
無題 無名 ID:e/CuE9hE 2018/12/15(六) 00:01:13.036 No.13328380
>>13328341
文組不要插嘴= =
無題 無名 ID:Ibcubxjg 2018/12/15(六) 00:04:29.041 No.13328411
我在學R跟Python
這樣以後會有呼吸嗎...
無題 無名 ID:soA2U22M 2018/12/15(六) 00:04:44.253 No.13328417
回覆: >>13328563
>>13327787
可是軟體錢最少
無題 無名 ID:soA2U22M 2018/12/15(六) 00:07:18.655 No.13328445
>>13328311
用JFormDesigner開發也是滿快的
無題 無名 ID:CUydOS3Q 2018/12/15(六) 00:08:50.413 No.13328467
>>13327899
學半年就能進公司
我學店讀了4年現在在尼特= =
無題 無名 ID:e/CuE9hE 2018/12/15(六) 00:15:41.019 No.13328540
微軟當初自己搞了一套微軟版的Java,
叫做J++

結果被Sun告上法院,最後微軟摸摸鼻子,
把J++收起來,然後重新改造成另一種語言,
就是C#

所以C#很多方面跟Java很像

有優點,就有代價,
C#開發環境的完善,
是建立在微軟都自己玩自己的。
所以如果打算一輩子吃軟飯的話,那就選C#

相反的,
Java標準一直都是各方勢力拉扯下的產物,
但是JAVA也比較吃得開,到處都可以用....
無題 無名 ID:/JvmeJY6 2018/12/15(六) 00:17:40.900 No.13328559
>>13327864
智障嗎
要由main thread來分配單子給不同的thread
你讓thread自己取單
他們彼此都不知道對方的狀態
你當然會有這個問題
無題 無名 ID:d20qedzI 2018/12/15(六) 00:17:57.951 No.13328563
>>13328417
台灣硬體最賺錢
美國軟體最賺錢
無題 無名 ID:oPIu8eOw 2018/12/15(六) 00:24:37.957 No.13328614
附圖
我原PO啦...大家這麼熱心回覆 我實在太感動了...
謝謝你們...

目前我的規劃是
1.用單線程
2.保持和資料庫的連線(KeepConnection),不要每次存取資料都重新連線,速度會拖慢非常多
3.剩下的看造化了...進公司之前就跟老闆說我啥都不會(之前學java的) 結果面試居然上了...進公司寫.NET JQUERY SQL 馬的我還真的一樣都不會 還沒陣亡我也挺佩服自己的= =

總之,這禮拜天應該還會進公司把進度補起來 謝謝大家QQ
無題 無名 ID:2Ub//28M 2018/12/15(六) 00:35:48.045 No.13328675
附圖
有沒有要年後轉職的扣定島島啊?
無題 無名 ID:ccQsVtp6 2018/12/15(六) 01:01:47.912 No.13328814
回覆: >>13328836
這裡是正在找工作的不太新鮮的新鮮人島民
北部有推薦的公司嗎?
前幾天去防毒軟體公司面試,結果隔天收到感謝函= =
無題 無名 ID:LtU1v4Us 2018/12/15(六) 01:05:13.459 No.13328836
回覆: >>13328844
>>13328814
>不太新鮮的新鮮人島民= =
無題 無名 ID:ccQsVtp6 2018/12/15(六) 01:07:14.733 No.13328844
>>13328836
七月畢業,已經尼特五個月了