Counting pulses

somthing like get the current milies time
endtime = milies + xxxxx
while (milies < endtime)
{ readpin readsignalstate
if (readsignalstate!=lastState){count++;lastState=readsignalState;}

}